摘要:寫了個簡單的彈窗插件效果圖如下功能仿彈出效果背景模糊可傳入的確定和取消回調函數等用法不帶參數調用會按照默認參數和回調函數調用帶參數調用目前有四個參數標題內容確定回調取消回調其中取消回調和標題是可選的而內容和確定回調必填確定取消關注達人按參
寫了個簡單的彈窗插件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
摘要:隨后會陸續發布及相關版本的插件。這和圖片查看器的操作方式是相同的。目前的調整大小存在一點,但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因為一些特殊的業務需求,經過一個多月的蟄...
摘要:隨后會陸續發布及相關版本的插件。這和圖片查看器的操作方式是相同的。目前的調整大小存在一點,但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因為一些特殊的業務需求,經過一個多月的蟄...
摘要:隨后會陸續發布及相關版本的插件。這和圖片查看器的操作方式是相同的。目前的調整大小存在一點,但不影響整體的使用。鍵盤控制和照片查看器的按鍵是一樣的。除了照片查看器,的圖片查看器也非常的高大上。 showImg(https://segmentfault.com/img/remote/1460000012565638?w=750&h=375); 前言 因為一些特殊的業務需求,經過一個多月的蟄...
摘要:仿滴滴出行項目最近,各大社區出現很多小伙伴的項目,趁著這股熱潮我也用擼了一個滴滴出行的項目。可是,后來在手機上發現,輸入的時候居然調不出軟鍵盤,寫項目的時候沒考慮到設備問題,簡直是大大的失誤。也就是說可以在組件內部進行請求,不需要提交。 Vue2.0 仿滴滴出行項目 最近,各大社區出現很多小伙伴的vue項目,趁著這股熱潮我也用vue擼了一個滴滴出行的項目。 效果預覽 showImg(h...
摘要:前幾天想了解如何寫彈窗組件,參考了知乎上的回答有以下兩種可取的寫法狀態管理如果彈窗組件放在根組件,使用來管理組件的和。 前幾天想了解vue如何寫彈窗組件,參考了知乎上的回答:https://www.zhihu.com/questio...有以下兩種可取的寫法:1.狀態管理 如果彈窗組件放在根組件,使用vuex來管理組件的show和hide。放在組件內,通過增加v-show或v-if來控...
閱讀 3525·2023-04-26 00:16
閱讀 1361·2021-11-25 09:43
閱讀 3824·2021-11-23 09:51
閱讀 2964·2021-09-24 09:55
閱讀 713·2021-09-22 15:45
閱讀 1387·2021-07-30 15:30
閱讀 3064·2019-08-30 14:04
閱讀 2237·2019-08-26 13:46