zoukankan      html  css  js  c++  java
  • 模块:弹窗

    效果图:

    主页代码

    <script type="text/javascript" src="jquery-1.11.2.min.js">
    </script>
    <script type="text/javascript" src="tanchuang.js">
    </script>
    <link href="tanchuang.css" rel="stylesheet" type="text/css" />
    <style type="text/css">
    *{
        margin: 0px auto;
    }
    </style>
    </head>
    
    <body style="background-color:#999">
    <div style="200px; margin-top:10px">
    <input type="button" value="弹出窗口" id="btntc" style="100px; height:30px; font-size:18px;" />
    </div>
    
    
    </body>
    <script type="text/javascript">
    $(document).ready(function(e) {
        
        $('#btntc').click(function(){
            
                var html = "<div style='color:red'>这是测试的弹窗</div>";
                var button ="<input type='button' value='确定' /><input type='button' value='取消' />";
    
                var win = new Window({
                    
                    width : 400, //宽度
                    height : 300, //高度
                    title : '测试弹窗', //标题
                    content : html, //内容
                    isMask : false, //是否遮罩
                    buttons : button, //按钮
                    isDrag:true, //是否移动
                    
                    });
            
            })
    });
    </script>

    js代码

      1 // 每个弹窗的标识
      2 var x =0;
      3 
      4 var idzt = new Array();
      5 
      6 var Window = function(config){
      7     
      8     //ID不重复
      9     idzt[x] = "zhuti"+x;  //弹窗ID
     10     
     11     //初始化,接收参数
     12     this.config = {
     13         width : config.width || 300, //宽度  如果没有值,300即默认值
     14         height : config.height || 200, //高度
     15         buttons : config.buttons || '', //默认无按钮
     16         title : config.title || '标题', //标题
     17         content : config.content || '内容', //内容
     18         isMask : config.isMask == false?false:config.isMask || true, //是否遮罩
     19         isDrag : config.isDrag == false?false:config.isDrag || true, //是否移动
     20         };
     21     
     22     //加载弹出窗口
     23     var w = ($(window).width()-this.config.width)/2;
     24     var h = ($(window).height()-this.config.height)/2;
     25     
     26     var nr = "<div class='zhuti' id='"+idzt[x]+"' bs='"+x+"' style='"+this.config.width+"px; height:"+this.config.height+"px; background-color:white; left:"+w+"px; top:"+h+"px;'></div>";
     27     $("body").append(nr);
     28     
     29     //加载弹窗标题
     30     var content ="<div id='title"+x+"' class='title' bs='"+x+"'>"+this.config.title+"<div id='close"+x+"' class='close' bs='"+x+"'>×</div></div>";
     31     //加载弹窗内容
     32     var nrh = this.config.height - 75; // 弹窗内容的高度
     33     content = content+"<div id='content"+x+"' bs='"+x+"' class='content' style='100%; height:"+nrh+"px;'>"+this.config.content+"</div>";
     34     //加载按钮
     35     content = content+"<div id='btnx"+x+"' bs='"+x+"' class='btnx'>"+this.config.buttons+"</div>";
     36     
     37     //将标题、内容及按钮添加进窗口
     38     $('#'+idzt[x]).html(content);
     39     
     40     
     41     //创建遮罩层
     42     if(this.config.isMask)
     43     {
     44         var zz = "<div id='zz'></div>";
     45         $("body").append(zz);
     46         $("#zz").css('display','block');
     47     }
     48     
     49     //最大最小限制,以免移动到页面外
     50     var maxX = $(window).width()-this.config.width;
     51     var maxY = $(window).height()-this.config.height;
     52     var minX = 0,
     53         minY = 0;
     54     
     55     //窗口移动
     56     if(this.config.isDrag)
     57     {
     58         //鼠标移动弹出窗
     59         $(".title").bind("mousedown",function(e){
     60                 
     61                 var n = $(this).attr("bs"); //取标识
     62                 
     63                 //使选中的到最上层
     64                 $(".zhuti").css("z-index",3);
     65                 $('#'+idzt[n]).css("z-index",4);
     66                 
     67                 //取初始坐标
     68                 var endX = 0, //移动后X坐标
     69                     endY = 0, //移动后Y坐标
     70                     startX = parseInt($('#'+idzt[n]).css("left")), //弹出层的初始X坐标
     71                     startY = parseInt($('#'+idzt[n]).css("top")), //弹出层的初始Y坐标
     72                     downX = e.clientX, //鼠标按下时,鼠标的X坐标
     73                     downY = e.clientY; //鼠标按下时,鼠标的Y坐标
     74                     
     75                 //绑定鼠标移动事件
     76                 $("body").bind("mousemove",function(es){
     77                     
     78                     endX = es.clientX - downX + startX; //X坐标移动
     79                     endY = es.clientY - downY + startY; //Y坐标移动
     80                     
     81                     //最大最小限制
     82                     if(endX > maxX)
     83                     {
     84                         endX = maxX;
     85                     } else if(endX < 0)
     86                     {
     87                         endX = 0;
     88                     }
     89                     if(endY > maxY)
     90                     {
     91                         endY = maxY;
     92                     } else if(endY < 0)
     93                     {
     94                         endY = 0;
     95                     }
     96                     
     97                     $('#'+idzt[n]).css("top",endY+"px");
     98                     $('#'+idzt[n]).css("left",endX+"px");
     99                     
    100                     window.getSelection ? window.getSelection().removeAllRanges():document.selection.empty(); //取消选中文本
    101                     
    102                     });
    103             });
    104         //鼠标按键抬起,释放移动事件
    105         $("body").bind("mouseup",function(){
    106             
    107                 $("body").unbind("mousemove");
    108             
    109             });
    110     }
    111     
    112     //关闭窗口
    113     $(".close").click(function(){
    114         
    115             var m = this.getAttribute("bs"); //找标识
    116             $('#'+idzt[m]).remove(); //移除弹窗
    117             $('#zz').remove(); //移除遮罩 
    118         
    119         })
    120         
    121         x++;  //标识增加
    122         
    123 }

    css样式

     1 .zhuti
     2 {
     3     position:absolute;
     4     z-index:3;
     5     font-size:14px;
     6     border-radius:5px;
     7     box-shadow:0 0 5px white;
     8     overflow:hidden;
     9     color:#333;
    10 }
    11 .title
    12 {
    13     background-color:#3498db;
    14     vertical-align:middle;
    15     height:35px;
    16     100%;
    17     line-height:35px;
    18     text-indent:1em;
    19 }
    20 .close{
    21     float:right;
    22     35px;
    23     height:35px;
    24     font-weight:bold;
    25     line-height:35px;
    26     vertical-align:middle;
    27     color:white;
    28     font-size:18px;
    29     }
    30 .close:hover
    31 {
    32     cursor:pointer;
    33 }
    34 .content
    35 {
    36     text-indent:1em;
    37     padding-top:10px;
    38 }
    39 .btnx
    40 {
    41     height:30px;
    42     100%;
    43     text-indent:1em;
    44 }
    45 .btn
    46 {
    47     height:28px;
    48     80px;
    49     float:left;
    50     margin-left:20px;
    51     color:#333;
    52 }
    53 #zz
    54 {
    55     100%;
    56     height:100%;
    57     opacity:0.15;
    58     display:none;
    59     background-color:#ccc;
    60     z-index:2;
    61     position:absolute;
    62     top:0px;
    63     left:0px;
    64 }
  • 相关阅读:
    elasticsearch如何设计索引
    LinkedList 的实现原理
    聊聊elasticsearch7.8的模板和动态映射
    elasticsearch7.8权限控制和规划
    cloudera manager server迁移
    2020年终总结
    工作两年半的一次复盘
    聊聊数据结构和算法
    AutoMapper源码解析
    [源码解析] 并行分布式框架 Celery 之 worker 启动 (2)
  • 原文地址:https://www.cnblogs.com/xingyue1988/p/6264440.html
Copyright © 2011-2022 走看看