成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

仿iOS彈窗插件Prompt.js

adie / 2473人閱讀

摘要:寫了個簡單的彈窗插件效果圖如下功能仿彈出效果背景模糊可傳入的確定和取消回調(diào)函數(shù)等用法不帶參數(shù)調(diào)用會按照默認(rèn)參數(shù)和回調(diào)函數(shù)調(diào)用帶參數(shù)調(diào)用目前有四個參數(shù)標(biāo)題內(nèi)容確定回調(diào)取消回調(diào)其中取消回調(diào)和標(biāo)題是可選的而內(nèi)容和確定回調(diào)必填確定取消關(guān)注達(dá)人按參

寫了個簡單的彈窗插件Prompt.js, 效果圖如下

功能: 仿iOS彈出效果, 背景模糊, 可傳入的確定和取消回調(diào)函數(shù)等.

用法:
不帶參數(shù)調(diào)用:
Prompt()

會按照默認(rèn)參數(shù)和回調(diào)函數(shù)調(diào)用

帶參數(shù)調(diào)用:

目前有四個參數(shù) - 標(biāo)題(str), 內(nèi)容(str), 確定回調(diào)(function), 取消回調(diào)(function). 其中取消回調(diào)和標(biāo)題是可選的, 而內(nèi)容和確定回調(diào)必填.

javascript
Prompt({content: "確定取消關(guān)注達(dá)人?", okCallback:function(){void(0)}, cancelCallback:function(){void(0)}})
按參數(shù)自動重載

當(dāng)沒有傳入取消回調(diào)函數(shù)時, 只會顯示"確定"按鈕.

代碼
module.exports = window.Prompt = function(options){
    var cancelFlag = false; 
    var titleFlag = false; 
    if(options){
        options.content||(options.content = "default content"); 
        options.okCallback||(options.okCallback = function(){
            console.log("ok chosen!"); 
        }); 
        if(options.cancelCallback){
            cancelFlag = true; 
        }; 
        if(options.title){
            titleFlag = true; 
        }; 
    }else{
        var options={
            title:"this is default title", 
            content: "this is default content", 
            okCallback: function(){
                console.log("ok clicked!"); 
            },
            cancelCallback: function(){
                console.log("cancel clicked!"); 
            }
        }
        cancelFlag = true; 
        titleFlag = true; 
    }; 
    // debugger; 
    var shade = document.createElement("div"); 
    shade.setAttribute("style", "background-color:rgba(0,0,0,0.6); width:100%; height: 100%; position:absolute; left:0; top:0; z-index:1024;")
    shade.classList.add("shade"); 
    var prompt = document.createElement("div"); 
    prompt.setAttribute("style", "position:absolute; margin:auto; left:0; right:0; top:0; bottom:0; width:6rem; height:4rem; background-color:#fff; z-index:1025; transition: all .3s ease; box-sizing: content-box; padding: 0.2rem; border-radius: 10px; opacity: 0; "); 
    var innerPrompt = document.createElement("div"); 
    innerPrompt.setAttribute("style", "height:100%; width:100%; text-align: center; font-size: 0.3rem; "); 
    innerPrompt.classList.add("innerPrompt"); 
    
    if(titleFlag){
        var title = document.createElement("p"); 
        title.innerHTML = options.title; 
        innerPrompt.appendChild(title); 
    }; 
    
    var content = document.createElement("p"); 
    content.innerHTML = options.content; 
    innerPrompt.appendChild(content); 
    
    function modualRemoval(){
        document.body.removeChild(shade); 
        var others = document.querySelectorAll("body > *"); 
        [].forEach.call(others, function(elem){
            if(elem.nodeName != "SCRIPT"){
                elem.style.webkitFilter = ""; 
            }
        }); 
    }; 

    var buttonWrapper = document.createElement("div"); 
    
    var okBtn = document.createElement("button"); 
    okBtn.innerHTML = "確定"; 
    okBtn.addEventListener("click", function(event){
        options.okCallback(); 
        modualRemoval(); 
        event.stopPropagation(); 
    }); 
    buttonWrapper.appendChild(okBtn); 
    
    if(cancelFlag){
        var cancelBtn = document.createElement("button"); 
        cancelBtn.innerHTML = "取消"; 
        cancelBtn.addEventListener("click", function(event){
            options.cancelCallback();
            modualRemoval(); 
            event.stopPropagation(); 
        }); 
        buttonWrapper.appendChild(cancelBtn); 
    }
    innerPrompt.appendChild(buttonWrapper); 
    
    prompt.appendChild(innerPrompt); 
    shade.appendChild(prompt); 
    document.body.appendChild(shade); 
    setTimeout(function(){
        var others = document.querySelectorAll("body > *:not(.shade)"); 
        [].forEach.call(others, function(elem){
            if(elem.nodeName != "SCRIPT"){
                elem.style.webkitFilter = "blur(6px)"; 
            }
        })
        prompt.style.opacity = 1; 
        prompt.style.padding = 0; 
    }, 50); 
    prompt.addEventListener("click", function(event){
        event.stopPropagation(); 
    }); 
    shade.addEventListener("click", function(event){
        modualRemoval(); 
    }); 
}
div.innerPrompt{
    padding: 0.2rem; 
}
div.innerPrompt > p:first-of-type{
    margin-top: 20%; 
}
div.innerPrompt > div{
    position: absolute;
    left:0; 
    bottom: 0; 
    display: -webkit-box; 
    width: 100%; 
    border-bottom-right-radius: 10px; 

}
div.innerPrompt > div > button{
    display: block; 
    -webkit-box-flex: 1; 
    background-color: #fff; 
    border-top: 1px solid #bbb; 
    height: 0.8rem; 
}
div.innerPrompt > div > button:last-child{
    border-bottom-right-radius: 10px; 
    color: #777; 
}
div.innerPrompt > div > button:first-child{
    border-bottom-left-radius: 10px; 
    border-right: 1px solid #bbb; 
    color: red; 
}

你也可以根據(jù)你的喜好定制CSS

-EOF-

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/87825.html

相關(guān)文章

  • jQuery 圖片查看插件 Magnify 開發(fā)簡介(仿 Windows 照片查看器)

    摘要:隨后會陸續(xù)發(fā)布及相關(guān)版本的插件。這和圖片查看器的操作方式是相同的。目前的調(diào)整大小存在一點(diǎn),但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因?yàn)橐恍┨厥獾臉I(yè)務(wù)需求,經(jīng)過一個多月的蟄...

    anyway 評論0 收藏0
  • jQuery 圖片查看插件 Magnify 開發(fā)簡介(仿 Windows 照片查看器)

    摘要:隨后會陸續(xù)發(fā)布及相關(guān)版本的插件。這和圖片查看器的操作方式是相同的。目前的調(diào)整大小存在一點(diǎn),但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因?yàn)橐恍┨厥獾臉I(yè)務(wù)需求,經(jīng)過一個多月的蟄...

    chaosx110 評論0 收藏0
  • jQuery 圖片查看插件 Magnify 開發(fā)簡介(仿 Windows 照片查看器)

    摘要:隨后會陸續(xù)發(fā)布及相關(guān)版本的插件。這和圖片查看器的操作方式是相同的。目前的調(diào)整大小存在一點(diǎn),但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因?yàn)橐恍┨厥獾臉I(yè)務(wù)需求,經(jīng)過一個多月的蟄...

    Airmusic 評論0 收藏0
  • Vue2.0 仿滴滴出行項(xiàng)目

    摘要:仿滴滴出行項(xiàng)目最近,各大社區(qū)出現(xiàn)很多小伙伴的項(xiàng)目,趁著這股熱潮我也用擼了一個滴滴出行的項(xiàng)目??墒?,后來在手機(jī)上發(fā)現(xiàn),輸入的時候居然調(diào)不出軟鍵盤,寫項(xiàng)目的時候沒考慮到設(shè)備問題,簡直是大大的失誤。也就是說可以在組件內(nèi)部進(jìn)行請求,不需要提交。 Vue2.0 仿滴滴出行項(xiàng)目 最近,各大社區(qū)出現(xiàn)很多小伙伴的vue項(xiàng)目,趁著這股熱潮我也用vue擼了一個滴滴出行的項(xiàng)目。 效果預(yù)覽 showImg(h...

    ShevaKuilin 評論0 收藏0
  • VUE2——事件驅(qū)動彈窗

    摘要:前幾天想了解如何寫彈窗組件,參考了知乎上的回答有以下兩種可取的寫法狀態(tài)管理如果彈窗組件放在根組件,使用來管理組件的和。 前幾天想了解vue如何寫彈窗組件,參考了知乎上的回答:https://www.zhihu.com/questio...有以下兩種可取的寫法:1.狀態(tài)管理 如果彈窗組件放在根組件,使用vuex來管理組件的show和hide。放在組件內(nèi),通過增加v-show或v-if來控...

    voyagelab 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<