亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

js實現彈窗插件功能實例代碼分享

2019-11-20 21:28:57
字體:
來源:轉載
供稿:網友

目前測試下:支持IE6+ 火狐 谷歌游覽器等。

先來看看此組件的基本配置項:如下:

復制代碼 代碼如下:

this.config = {

 targetCls   :   '.clickElem',   // 點擊元素
 title:  '我是龍恩',      // 窗口標題
 content     :  'text:<p style="width:100px;height:100px">我是龍</p>',
 //content            :  'img:http://www.baidu.com/a.jpg',
// 窗口內容 {text:具體內容 | id:id名 | img:圖片鏈接 |
 // iframe:src鏈接} {string} 
 width:  400,      // 內容的寬度
 height      :  300,      // 內容的高度
 theight     :  30,// 標題的高度 默認為30
 drag :  true,     // 是否可以拖動 默認為true
 time :  3000,     // 自動關閉窗口的時間 為空或者'undefined'則不關閉
 showBg      :  true,     // 設置是否顯示遮罩層 默認為true 遮罩
 closable    :  '#window-close', // 關閉按鈕
 bgColor     :  '#000',   // 默認顏色
 opacity     : 0.5,// 默認透明度
 position    : {
     x: 0,
     y: 0   //默認等于0 居中
 },
 zIndex      :     10000,
 isScroll    : true,      //默認情況下 窗口隨著滾動而滾動
 isResize    : true,      // 默認情況下 隨著窗口縮放而縮放
 callback    : null//彈窗顯示后回調函數

    };

JS編寫簡單的彈窗插件(含有demo和源碼)
2013-12-11 22:30 by 龍恩0707, 409 閱讀, 1 評論, 收藏, 編輯
 最近項目做完了 事情不是很多,今天正好也在調休,所以趁著這個時間研究了一下簡易的JS彈窗功能,當然網上這塊插件非常多,本人也沒有仔細看網上的插件源碼 只是憑著日常使用過的彈窗插件有這么多功能 來實現自己的彈窗思路,當然我這個可能實現了基本功能,那么如果想做的更好 更完善需要以后繼續優化!如果有不足之處!請大家多多諒解!

由于彈窗大家都知道是個什么樣的 所以這次沒有做演示效果圖!目前測試下:支持IE6+ 火狐 谷歌游覽器等。

先來看看此組件的基本配置項:如下:

按 Ctrl+C 復制代碼

按 Ctrl+C 復制代碼
1. 支持配置標題 內容,標題的高度 內容的寬度和高度 窗口是否可以拖動 彈窗后是否自動關閉 是否顯示遮罩背景 顏色 及 透明度的配置,及窗口的展示位置 默認x軸0 y軸0是居中對齊,也可以自己配置x軸  y軸的位置 但是要注意是相對于父元素那個X軸 y軸 如果不指定父元素的相對定位 那么默認情況下會相對于document的。當然窗口內容的寬度和高度不建議超過游覽器的一屏幕的寬度和高度 盡量小于第一屏的寬度和高度 因為我以前用別人的彈窗插件會存在點擊關閉按鈕后 由于游覽器有滾動條 點擊后觸發滾動條事件 導致關閉不了窗口 如果內容寬度和高度很大的話 也沒有關系 窗口自動會出現滾動條的。

2. 窗口的內容配置項 支持四種 1.text(文本) 可以如下配置 text:<p style="width:100px;height:100px">我是龍恩</p>

    2. img(圖片) 可以如下配置 img:http://www.baidu.com/a.jpg

    3. id(id節點)  可以如下配置 'id:XX'

    4. iframe   可以如下配置 'iframe:http://www.baidu.com(iframe地址)'

3. 提供彈窗后回調函數: 如彈窗后可以做自己想做的事情。

所以彈窗組件也沒有什么好說的 當然如果要用到自己的項目中 css樣式可以自己重新寫的,我JS并沒有寫死掉 只是完成JS基本彈窗業務功能。

HTML代碼如下:

復制代碼 代碼如下:

<div class="clickElem" style="margin-top:10px;">我是龍恩 請點擊我</div>
<div class="clickElem" style="margin-top:10px;">我是龍恩 請點擊我</div>

CSS代碼如下

復制代碼 代碼如下:

<style type="text/css">
    *{margin:0;padding:0;list-style-type:none;}
    a,img{border:0;}
    body{font:12px/180% Arial, Helvetica, sans-serif;}
    label{cursor:pointer;}

    #window-box{border:5px solid #E9F3FD;background:#FFF;}
    .windown-title{position:relative;height:30px;border:1px solid #A6C9E1;overflow:hidden;background:url(images/tipbg.png) 0 0 repeat-x;}
    .window-title h2{padding-left:5px;font-size:14px;color:#666;}
    #window-close{position:absolute;right:10px;top:8px;width:10px;height:16px;text-indent:-10em;overflow:hidden;background:url(images/tipbg.png) 100% -49px no-repeat;cursor:pointer;}
    #window-content-border{padding:5px 0 5px 5px;}

</style>

JS代碼如下

復制代碼 代碼如下:

/**
 * 編寫JS彈窗組件
 * @date 2013-12-10
 * @author tugenhua
 * @email 879083421@qq.com
 */

 function Overlay(options){

    this.config = {

 targetCls   :   '.clickElem',   // 點擊元素
 title:  '我是龍恩',      // 窗口標題
 content     :  'text:<p style="width:100px;height:100px">我是龍恩</p>',
 //content     :  'img:http://gtms01.alicdn.com/tps/i1/T1USkqFc0dXXb5rXb6-1060-300.jpg',
     // 窗口內容 {text:具體內容 | id:id名 | img:圖片鏈接 |
     // iframe:src鏈接} {string} 
 width:  400,      // 內容的寬度
 height      :  300,      // 內容的高度
 theight     :  30,// 標題的高度 默認為30
 drag :  true,     // 是否可以拖動 默認為true
 time :  3000,     // 自動關閉窗口的時間 為空或者'undefined'則不關閉
 showBg      :  true,     // 設置是否顯示遮罩層 默認為true 遮罩
 closable    :  '#window-close', // 關閉按鈕
 bgColor     :  '#000',   // 默認顏色
 opacity     : 0.5,// 默認透明度
 position    : {
     x: 0,
     y: 0   //默認等于0 居中
 },
 zIndex      :     10000,
 isScroll    : true,      //默認情況下 窗口隨著滾動而滾動
 isResize    : true,      // 默認情況下 隨著窗口縮放而縮放
 callback    : null//彈窗顯示后回調函數

    };

    this.cache = {
 isrender     :    true,     // 彈窗html結構只渲染一次
 isshow:    false,    // 窗口是否已經顯示出來
 moveable     :    false
    };

    this.init(options);
 }

 Overlay.prototype = {

    constructor: Overlay,

    init: function(options){
 this.config = $.extend(this.config,options || {});
 var self = this,
     _config = self.config,
     _cache = self.cache;
 $(_config.targetCls).each(function(index,item){

     $(item).unbind('click');
     $(item).bind('click',function(){

  // 渲染彈窗HTML結構
  self._renderHTML();

  // 窗口移動
  self._windowMove();
     });
 });

 // 窗口縮放
 self._windowResize('#window-box');

 // 窗口隨著滾動條一起滾動
 self._windowIsScroll('#window-box');



    },
    /*
     * 渲染彈窗HTML結構
     */
    _renderHTML: function(){
 var self = this,
     _config = self.config,
     _cache = self.cache;
 var html ='';
 if(_cache.isrender) {

     html+= '<div id="windowbg" style="display:none;position:absolute;top:0;left:0;"></div>' +
      '<div id="window-box" style="display:none;overflow:hidden;">' +
   '<div class="window-title"><h2></h2><span id="window-close">關閉</span></div>'+
   '<div id="window-content-border"><div id="window-content"></div></div>' +
      '</div>';

     $('body').append(html);

     $("#windowbg").css('z-index',_config.zIndex);
     $('#window-content-border').css({'width':_config.width + 'px','height':_config.height + 'px','overflow':'auto'});

     $('.window-title h2').html(_config.title);
     $('.window-title').css({'height':_config.theight + 'px','width':_config.width,'overflow':'hidden'});
     _cache.isrender = false;

     // 判斷傳遞進來的內容格式
     self._contentType();
     if(_config.showBg) {
  // 渲染背景寬度和高度
  self._renderDocHeight();
  $("#windowbg").show();

  self.show();
     }else {
  $("#windowbg").hide();
  self.show();
     }
     self._showDialogPosition("#window-box");
  }else {

     // 如果彈窗已經創建出來的話, 只是隱藏掉了, 那么我們顯示出來
     self.show();
     $("#windowbg").animate({"opacity":_config.opacity},'normal');
     if(_config.showBg) {
  $("#windowbg").show();
     }

     self._showDialogPosition("#window-box");
  }
  $(_config.closable).unbind('click');
  $(_config.closable).bind('click',function(){
     // 點擊關閉按鈕
     self._closed();
  });

  // 渲染后 回調函數
  _config.callback && $.isFunction(_config.callback) && _config.callback();
    },
    /**
     * 顯示彈窗
     */
     show: function(){
 var self = this,
     _config = self.config,
     _cache = self.cache;
 $("#window-box") && $("#window-box").show();
 _cache.isshow = true;
 if(_config.time == '' || typeof _config.time == 'undefined') {
     return;
 }else {
     t && clearTimeout(t);
 var t = setTimeout(function(){
  self._closed();
     },_config.time);
 }
     },
     /**
      * 隱藏彈窗
      */
     hide: function(){
 var self = this,
     _cache = self.cache;
 $("#window-box") && $("#window-box").hide();
 _cache.isshow = false;
     },
     /**
      *    判斷傳進來的內容類型
      */
     _contentType: function(){
 var self = this,
     _config = self.config,
     _cache = self.cache;

 var contentType =  _config.content.substring(0,_config.content.indexOf(":")),
     content = _config.content.substring(_config.content.indexOf(":")+1,_config.content.length);

 switch(contentType) {
     case 'text':
  $('#window-content').html(content);

     break;

     case 'id':
  $('#window-content').html($('#'+content).html());

     break;

     case 'img':
  $('#window-content').html("<img src='"+content+"' class='window-img'/>");

     break;

     case 'iframe':
  $('#window-content').html('<iframe src="'+content+'" width="100%" height="100%" scrolling="yes" frameborder="0"></iframe>');
  $("#window-content-border").css({'overflow':'visible'});

     break;
 }
     },
     /**
      * 點擊關閉按鈕
      */
     _closed: function(){
 var self = this,
     _config = self.config,
     _cache = self.cache;
 if(_cache.isshow) {
     self.hide();
 }
 if(_config.showBg) {
     $("#windowbg").hide();
 }
 $("#windowbg").animate({"opacity":0},'normal');
     },
     /**
      * 顯示彈窗的位置 默認情況下居中
      */
     _showDialogPosition: function(container) {
  var self = this,
      _config = self.config,
      _cache = self.cache;
  $(container).css({'position':'absolute','z-index':_config.zIndex + 1});
  var offsetTop = Math.floor(($(window).height() - $(container).height())/2) + $(document).scrollTop(),
      offsetLeft = Math.floor(($(window).width() - $(container).width())/2) + $(document).scrollLeft();

  // 判斷x,y位置默認是不是等于0 如是的話 居中 否則 根據傳進來的位置重新定位
 if(0 === _config.position.x && 0 === _config.position.y){

     $(container).offset({'top':offsetTop, 'left':offsetLeft});
 }else{
     $(container).offset({'top':_config.position.y,'left':_config.position.x});
 }
     },
     /**
      * 渲染底部背景的高度
      */
      _renderDocHeight: function(){
  var self = this,
      _config = self.config;
  $("#windowbg").animate({"opacity":_config.opacity},'normal');
  if(self._isIE6()){
     $("#windowbg").css({'background':'#fff','height':$(document).height()+'px','width':$(document).width()+"px"});
  }else {
     $("#windowbg").css({'background':_config.bgColor,'height':$(document).height()+'px','width':$(document).width()+"px"});
  }

      },
      /*
* 窗口縮放
*/
      _windowResize: function(elem){
  var self = this,
      _config = self.config;
  $(window).unbind('resize');
  $(window).bind('resize',function(){
      t && clearTimeout(t);
      var t = setTimeout(function(){
   if(_config.isResize){
self._showDialogPosition(elem);
self._renderDocHeight();
   }
      },200);
  });
      },
    /**
     * 窗口是否隨著滾動條一起滾動
     */
     _windowIsScroll: function(elem){
 var self = this,
     _config = self.config;
 $(window).unbind('scroll');
 $(window).bind('scroll',function(){
     t && clearTimeout(t);
      var t = setTimeout(function(){
   if(_config.isScroll){
self._showDialogPosition(elem);
self._renderDocHeight();
   }
      },200);
 });
     },
     /**
      * 窗口移動
      */
     _windowMove: function(){
 var self = this,
     _config = self.config,
     _cache = self.cache;
 var mouseX = 0,
     mouseY = 0;

 $('.window-title').mouseenter(function(){
     $(this).css({'cursor':'move'});
 });
 $('.window-title').mouseleave(function(){
     $(this).css({'cursor':'default'});
 });
 $('.window-title').mousedown(function(e){
     _cache.moveable = true;
     mouseX = e.clientX - $(this).offset().left;
     mouseY = e.clientY - $(this).offset().top;
     $('.window-title').css({'cursor':'move'});
 });
 $(document).mouseup(function(){
     if(!_cache.moveable) {
  return;
     }
     $('.window-title').css({'cursor':'default'});
     _cache.moveable = false;
 });
 $('#window-box').mousemove(function(e){

     if(_cache.moveable) {
  $(this).css({'left':e.clientX - mouseX + 'px','top':e.clientY - mouseY + 'px'});
     }

 });

     },
     /*
      * 判斷是否是IE6游覽器
      * @return {Boolean}
      */
     _isIE6: function(){
 return navigator.userAgent.match(/MSIE 6.0/)!= null;
     }

 };

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩美女在线观看一区| 日韩av手机在线| 亚洲风情亚aⅴ在线发布| 91精品国产综合久久香蕉最新版| 成人免费直播live| 亚洲精品综合久久中文字幕| 亚洲老头老太hd| 国产亚洲aⅴaaaaaa毛片| 欧美一级成年大片在线观看| 欧美成人免费一级人片100| 日韩精品在线观看网站| 亚洲一区二区久久久| 日韩av影视综合网| 国产精品久久久久久久久久久久| 久久久久中文字幕2018| 精品偷拍一区二区三区在线看| 日韩av电影国产| 这里精品视频免费| 国内精品久久久久久中文字幕| 91香蕉嫩草影院入口| 色婷婷亚洲mv天堂mv在影片| 成人中文字幕+乱码+中文字幕| 国内免费精品永久在线视频| 国产欧美日韩专区发布| 国产免费一区二区三区在线观看| 国产精品久久久av| 亚洲天堂免费视频| 久久天天躁狠狠躁夜夜爽蜜月| 久久久久久久97| 538国产精品视频一区二区| 欧美电影在线观看网站| 久久福利网址导航| 91久久久国产精品| 国内精品小视频在线观看| 国语自产在线不卡| 亚洲精品一区二区三区不| 久久久91精品| 国产成人综合一区二区三区| 美女av一区二区三区| 成人中心免费视频| 国产一区二区激情| 亚洲精品美女在线观看播放| 91精品国产777在线观看| 亚洲国产精品va| 综合激情国产一区| 一区二区三区视频在线| 懂色av中文一区二区三区天美| 欧美亚洲另类视频| 中文亚洲视频在线| 亚洲天堂av综合网| 亚洲成人动漫在线播放| 日韩美女在线播放| 亚洲精品美女网站| 欧美一区二区视频97| 国产一区二区三区久久精品| 久久久精品影院| 热久久免费国产视频| 国产精品久久综合av爱欲tv| 在线观看国产精品日韩av| 亚洲人成在线免费观看| 91九色国产视频| 久久久久久亚洲精品不卡| 国产有码在线一区二区视频| 久久精品国产清自在天天线| 日韩精品极品在线观看| 91情侣偷在线精品国产| 一区二区三区美女xx视频| 日韩精品999| 国产美女久久精品| 国产精品视频久久久| 日本a级片电影一区二区| 成人亲热视频网站| 亚洲大胆人体视频| 国产精品久久久久77777| 国产成人综合久久| 久久久成人的性感天堂| 欧美电影免费观看高清| 亚洲成人精品视频| 少妇高潮 亚洲精品| 在线观看中文字幕亚洲| 在线电影欧美日韩一区二区私密| 国产视频观看一区| 91久久久国产精品| 国产亚洲人成a一在线v站| 91成人天堂久久成人| 久久综合网hezyo| 国产精品无码专区在线观看| 国产亚洲精品成人av久久ww| 国产日韩精品在线观看| 国产91露脸中文字幕在线| 日韩美女毛茸茸| 国产精品久久久久久久7电影| 国产成人高清激情视频在线观看| 黄色成人在线播放| 欧美日韩一区二区精品| 国产成人鲁鲁免费视频a| 97在线视频免费| 91精品国产一区| 日韩欧美在线视频观看| 日韩小视频在线| 精品福利一区二区| 中文字幕日韩欧美精品在线观看| 91国产视频在线播放| 亚洲电影天堂av| 国产精品久久久久久久久久三级| 亚洲欧美日韩中文在线制服| 成人信息集中地欧美| 91久久中文字幕| 91久久久久久国产精品| 97在线精品国自产拍中文| 日韩中文字幕亚洲| 欧美日韩亚洲一区二区| 欧美一区亚洲一区| 国产成人高潮免费观看精品| 欧美成人性生活| 亚洲国产欧美在线成人app| 热re91久久精品国99热蜜臀| 日韩成人性视频| 在线观看中文字幕亚洲| 成人黄色免费在线观看| 久久天天躁狠狠躁老女人| 国产欧美日韩最新| 亚洲天堂2020| 日韩一级黄色av| 亚洲午夜未满十八勿入免费观看全集| 有码中文亚洲精品| 国产成人福利夜色影视| 一个色综合导航| 亚洲裸体xxxx| 成人妇女免费播放久久久| 欧美在线视频免费观看| 久久久久久久久电影| 久久久亚洲国产| 日韩欧美在线免费| 久久99久国产精品黄毛片入口| 青草热久免费精品视频| 亚洲成avwww人| 国产美女搞久久| 亚洲日本欧美日韩高观看| 国产精品午夜国产小视频| 久久久精品日本| 精品久久久一区二区| 亚洲二区在线播放视频| 国产精品电影在线观看| 庆余年2免费日韩剧观看大牛| 日韩精品免费在线播放| 久久精品国产亚洲一区二区| 亚洲深夜福利在线| 精品亚洲男同gayvideo网站| 国产成人一区二区在线| 国产乱人伦真实精品视频| 国产在线98福利播放视频| 97香蕉久久超级碰碰高清版| 欧美在线观看网址综合| 亚洲欧美精品suv| 懂色av中文一区二区三区天美| 亚洲老板91色精品久久| 91成人福利在线| 国产精品丝袜一区二区三区| 91精品久久久久久久久久入口| 午夜精品美女自拍福到在线| 日韩精品久久久久久久玫瑰园| 中文字幕精品在线视频| 久久视频中文字幕|