国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

仿iOS彈窗插件Prompt.js

adie / 2466人閱讀

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

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

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

用法:
不帶參數調用:
Prompt()

會按照默認參數和回調函數調用

帶參數調用:

目前有四個參數 - 標題(str), 內容(str), 確定回調(function), 取消回調(function). 其中取消回調和標題是可選的, 而內容和確定回調必填.

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

當沒有傳入取消回調函數時, 只會顯示"確定"按鈕.

代碼
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; 
}

你也可以根據你的喜好定制CSS

-EOF-

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/87825.html

相關文章

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

    摘要:隨后會陸續發布及相關版本的插件。這和圖片查看器的操作方式是相同的。目前的調整大小存在一點,但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因為一些特殊的業務需求,經過一個多月的蟄...

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

    摘要:隨后會陸續發布及相關版本的插件。這和圖片查看器的操作方式是相同的。目前的調整大小存在一點,但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因為一些特殊的業務需求,經過一個多月的蟄...

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

    摘要:隨后會陸續發布及相關版本的插件。這和圖片查看器的操作方式是相同的。目前的調整大小存在一點,但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因為一些特殊的業務需求,經過一個多月的蟄...

    Airmusic 評論0 收藏0
  • Vue2.0 仿滴滴出行項目

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

    ShevaKuilin 評論0 收藏0
  • VUE2——事件驅動彈窗

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

    voyagelab 評論0 收藏0

發表評論

0條評論

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