1. 程式人生 > >彈窗提示插件(全局提示彈窗)

彈窗提示插件(全局提示彈窗)

osi .html global 遮罩 filter ase 方便 timeout obi

彈窗可以說是每個項目都會用到的一個東西,彈窗有很多種,有系統默認的,網上也有一堆插件。默認的彈窗一般不好看,都會被設計嫌棄的,如果用插件的話,又比較占資源空間,所有我開發的項目一般都是自己封裝全局同用插件的,下面來細說一下這些彈窗的用法。

系統默認的有這3種常用的

//彈出對話框並輸出一段提示信息  
function ale() {  
    //彈出一個對話框  
    alert("提示信息!"); 
} 
//彈出一個詢問框,有確定和取消按鈕  
function firm() {  
    //利用對話框返回的值 (true 或者 false)  
    if (confirm("
你確定提交嗎?")) { alert("點擊了確定"); } else { alert("點擊了取消"); } } //彈出一個輸入框,輸入一段文字,可以提交 function prom() { var name = prompt("請輸入您的名字", ""); //將輸入的內容賦給變量 name //這裏需要註意的是,prompt有兩個參數,前面是提示的話,後面是當對話框出來後,在對話框裏的默認值 if (name)//如果返回的有內容 { alert(
"歡迎您:" + name) } }

網上的插件也有好幾個不錯的插件,我個人用得比較多的就是layer,使用起來也很方便。大家可以去官網看看

//初體驗

layer.alert(內容)
//第三方擴展皮膚

layer.alert(內容, {
  icon: 1,
  skin: layer-ext-moon //該皮膚由layer.seaning.com友情擴展。關於皮膚的擴展規則,去這裏查閱
})
//詢問框

layer.confirm(您是如何看待前端開發?, {
  btn: [重要,奇葩] //按鈕
}, function(){
  layer.msg(
的確很重要, {icon: 1}); }, function(){ layer.msg(也可以這樣, { time: 20000, //20s後自動關閉 btn: [明白了, 知道了] }); }); //提示層 layer.msg(玩命提示中); //墨綠深藍風 layer.alert(墨綠風格,點擊確認看深藍, { skin: layui-layer-molv //樣式類名 ,closeBtn: 0 }, function(){ layer.alert(偶吧深藍style, { skin: layui-layer-lan ,closeBtn: 0 ,anim: 4 //動畫類型 }); }); //捕獲頁 layer.open({ type: 1, shade: false, title: false, //不顯示標題 content: $(.layer_notice), //捕獲的元素,註意:最好該指定的元素要存放在body最外層,否則可能被其它的相對元素所影響 cancel: function(){ layer.msg(捕獲就是從頁面已經存在的元素上,包裹layer的結構, {time: 5000, icon:6}); } }); //頁面層 layer.open({ type: 1, skin: layui-layer-rim, //加上邊框 area: [420px, 240px], //寬高 content: html內容 }); //自定頁 layer.open({ type: 1, skin: layui-layer-demo, //樣式類名 closeBtn: 0, //不顯示關閉按鈕 anim: 2, shadeClose: true, //開啟遮罩關閉 content: 內容 }); //tips層 layer.tips(Hi,我是tips, 吸附元素選擇器,如#id); //iframe層 layer.open({ type: 2, title: layer mobile頁, shadeClose: true, shade: 0.8, area: [380px, 90%], content: mobile/ //iframe的url }); //iframe窗 layer.open({ type: 2, title: false, closeBtn: 0, //不顯示關閉按鈕 shade: [0], area: [340px, 215px], offset: rb, //右下角彈出 time: 2000, //2秒後自動關閉 anim: 2, content: [test/guodu.html, no], //iframe的url,no代表不顯示滾動條 end: function(){ //此處用於演示 layer.open({ type: 2, title: 很多時候,我們想最大化看,比如像這個頁面。, shadeClose: true, shade: false, maxmin: true, //開啟最大化最小化按鈕 area: [893px, 600px], content: //fly.layui.com/ }); } }); //加載層 var index = layer.load(0, {shade: false}); //0代表加載的風格,支持0-2 //loading層 var index = layer.load(1, { shade: [0.1,#fff] //0.1透明度的白色背景 }); //小tips layer.tips(我是另外一個tips,只不過我長得跟之前那位稍有些不一樣。, 吸附元素選擇器, { tips: [1, #3595CC], time: 4000 }); //prompt層 layer.prompt({title: 輸入任何口令,並確認, formType: 1}, function(pass, index){ layer.close(index); layer.prompt({title: 隨便寫點啥,並確認, formType: 2}, function(text, index){ layer.close(index); layer.msg(演示完畢!您的口令:+ pass +<br>您最後寫下了:+text); }); }); //tab層 layer.tab({ area: [600px, 300px], tab: [{ title: TAB1, content: 內容1 }, { title: TAB2, content: 內容2 }, { title: TAB3, content: 內容3 }] }); //相冊層 $.getJSON(test/photos.json?v=+new Date, function(json){ layer.photos({ photos: json //格式見API文檔手冊頁 ,anim: 5 //0-6的選擇,指定彈出圖片動畫類型,默認隨機 }); });

下面這個就是我個人封裝的一個小小的彈窗對象,大家喜歡可以拿去用

var GlobalTip = {
  /**
 * 全局提示框  只顯示提示內容的彈窗
 * @param {type} message      提示內容
 */

  TipMessageBox:function(message,callback_function){
    var timer = null;
    var body = document.getElementsByTagName(body)[0];
    var globalNotice = document.createElement(div);
    globalNotice.id = globalNotice;
    if(message.length>11){
      globalNotice.innerHTML = <p style="line-height:35px;">+message+</p><div class="back"></div>;
    }else{
      globalNotice.innerHTML = <p>+message+</p><div class="back"></div>;
    }
    body.appendChild(globalNotice);
    clearInterval(timer);
    timer = setTimeout(function(){
       if($.isFunction(callback_function)){callback_function();}
      document.getElementById(globalNotice).parentNode.removeChild(document.getElementById(globalNotice));
    },2000)
  },


  /**
 * 全局選擇彈框  有"確定"與"取消"按鈕的彈窗
 * @param {type} message           提示內容
 * @param {type} YesMess           右側按鈕提示
 * @param {type} callback_function 回調函數(可選)
 * @param {type} callback_param     回調函數參數,(由於參數個數不定,所以以對象方式傳參)(可選)

    使用例子:
         GlobalTip.askComfirmTipBox(message,YesMess,callback_function,callback_param); 
         無參數:GlobalTip.askComfirmTipBox(‘提示消息內容‘,‘確定‘,回調函數);

         有參數:var param = {"one":‘參數1‘,‘two‘:‘參數二‘}
                 GlobalTip.askComfirmTipBox(‘請選取裁剪圖片範圍‘,‘確定‘,回調函數,param);
 */

  askComfirmTipBox:function(message,YesMess){
    var callback_function = arguments[2];
    var callback_param = arguments[3]?arguments[3]:false;
    var body = document.getElementsByTagName(body)[0];
    var globaComfirmTipBox = document.createElement(div);
    globaComfirmTipBox.id = ComfirmTipBox;
    globaComfirmTipBox.innerHTML = <h3><span>提示</span><i onclick="GlobalTip.close()"></i></h3><p>+message+</p><p><a id="askComfirmTipbtn0" onclick="GlobalTip.close()" href="javascript:;;">取消</a><a id="askComfirmTipbtn1" onclick="GlobalTip.close()" class="ComfirmTipBox_ok" href="javascript:;;">+YesMess+</a></p>;
    var grayBox = document.createElement(div);
    grayBox.id = globalgrayBox;
    body.appendChild(globaComfirmTipBox);
    body.appendChild(grayBox);
    $(#askComfirmTipbtn1).click(function(){
        if($.isFunction(callback_function)) {
            if(callback_param != false ){
              callback_function(callback_param);
              return ;
            }
            callback_function();
        }
    })
  },

    /**
 * 全局選擇彈框  只有一個"確定"按鈕的彈窗
 * @param {type} message      提示內容(必填)
 * @param {type} YesMess      右側按鈕提示(必填)
 * @param {type} callback_function 回調函數名稱(可選)
 * @returns {undefined}
 */
  WarningTipBox:function(message,YesMess){
    var callback_function = arguments[2];
    var callback_param = arguments[3]?arguments[3]:false;
    var body = document.getElementsByTagName(body)[0];
    var globaComfirmTipBox = document.createElement(div);
    globaComfirmTipBox.id = ComfirmTipBox;
    globaComfirmTipBox.innerHTML = <h3><span>提示</span><i onclick="GlobalTip.close()"></i></h3><p>+message+</p><p><a onclick="GlobalTip.close()" id="askComfirmTipbtn1" class="ComfirmTipBox_ok" href="javascript:;;">+YesMess+</a></p>;
    var grayBox = document.createElement(div);
    grayBox.id = globalgrayBox;
    body.appendChild(globaComfirmTipBox);
    body.appendChild(grayBox);
    $(#askComfirmTipbtn1).click(function(){
        if($.isFunction(callback_function)) {
            if(callback_param != false ){
              callback_function(callback_param);
              return ;
            }
            callback_function();
        }
    })
  },

  /*關閉彈窗*/
  close:function(){
     document.getElementById(ComfirmTipBox).parentNode.removeChild(document.getElementById(ComfirmTipBox));
     document.getElementById(globalgrayBox).parentNode.removeChild(document.getElementById(globalgrayBox));
  }

}



//css樣式

/*----------------------------------------------- 通用彈框 -------------------------------------*/
#globalNotice{position: fixed;padding:10px;width: 180px;height: 70px;top:40%;left: 50%;margin-left: -100px;margin-top: -45px;z-index: 999;border-radius: 2px;}
#globalNotice p{position: absolute;top:10px;left: 10px;width: 180px;height: 70px;line-height: 70px;font-size: 16px;color: #fff;text-align: center;z-index: 1001;overflow: hidden;}
#globalNotice div.back{position: absolute;top:0;left: 0;width: 200px;height: 90px;z-index: 1000;background: #000;opacity: 0.75;filter:alpha(opacity=75);transition:all 0.5s ease-out 0s;

-moz-transition:all 0.5s ease-out 0s;-webkit-transition:all 0.5s ease-out 0s;-o-transition:all 0.5s ease-out 0s;}
#ComfirmTipBox{position: fixed;width: 270px;/*height: 160px;*/top:40%;left: 50%;margin-left: -135px;margin-top: -80px;z-index: 999;background: #fff;padding-bottom: 20px;}
#ComfirmTipBox h3{height:40px;line-height: 40px;font-size: 14px;color: #333;border-bottom: 1px solid #f2f2f2;padding-left: 17px;}
#ComfirmTipBox h3 i{width: 40px;height: 40px;float: right;background: url(../images/popup_guanbi.png) no-repeat 0px 13px;cursor: pointer;background-size:30px 60px; }
#ComfirmTipBox p{font-size: 16px;color: #333;text-align: center;/*height: 64px;*/line-height: 30px;padding-top: 15px;}
#ComfirmTipBox p a{display: inline-block;margin:0 25px;width: 80px;height: 32px;line-height: 32px;text-align: center;color:#fff;font-size: 14px;background: #b3b3b3;border-radius: 2px; }
#ComfirmTipBox p a.ComfirmTipBox_ok{background: #34c5c7;}
#globalgrayBox{position: fixed;top:0;left: 0;width: 100%;height: 100%;z-index: 998;background: #000;opacity: .5;-moz-opacity:0.5;-webkit-opacity:0.5;-o-opacity:0.5; filter:alpha(opacity=50);}

 

謝謝閱讀,如果能幫到您,請幫忙頂一個,當然喜歡的可以收藏一下,謝謝!~( ̄▽ ̄~)(~ ̄▽ ̄)~

註:轉發請註明出處

彈窗提示插件(全局提示彈窗)