• 记录一个简单的可以拖动的弹出层


    由于在公司开发中,经常会遇到页面要求弹出一个展示层,因此在网上找个了示例进行了下简单修改,在此做一个记录,方便以后用到查阅。

    1.弹出层:

    使用的时候放置到body标签中

    <!-- 弹出层 -->
    <div id="mask" class="maskDialog"></div>
    <div class="dialog" id="dialog">
    <div class="dialog_head" id="move_part">扫一扫</div>
    <div class="dialog_content">
    <div class="dialog_content_qrcode">
    <div id="my_camera"></div>
    </div>
    </div>
    <div><input id="close" value="关闭" class="button close_button"></div>
    </div>

    2.css样式:

    可以根据实际需求进行样式修改

    /* 弹出层 窗体样式 */
    /a{text-decoration: none; color: #eee; display: block;}
    .button{ 100px; height: 30px; border-radius: 20px; text-align:center;line-height: 30px;}
    .close_button{background:#8f8f8f;margin:0 auto;}
    .close_button:hover{background: #484848;}
    .maskDialog{ 100%;height: 100%;background:#000;position: absolute;top: 0px;left:0px;opacity: 0.4;z-index: 8000; display: none;-moz-user-select: none; -webkit-user-select: none;}
    .dialog{ 650px;background:#E3EFFB; position: absolute;z-index: 9000;padding-bottom: 10px; display: none;-moz-user-select: none; -webkit-user-select: none;}
    .dialog_head{ 100%;height:30px;background:#6fced0;text-align: center;line-height: 30px;color: #eee; cursor: move;}
    .dialog_content{ 100%;height:350px;text-align: center;}
    .dialog_content_qrcode{320px;height:320px;border:1px solid black;background: white;margin-top: 4%;margin-left: 25%;}

    3.引用的js文件

    $(document).ready(function(){
    var $dialog = $("#dialog");
    var $mask = $("#mask");

    //自动居中对话框
    function autoCenter(el){
    var bodyW = $(window).width();
    var bodyH = $(window).height();
    var elW = el.width();
    var elH = el.height();
    $dialog.css({"left":(bodyW-elW)/2 + 'px',"top":(bodyH-elH)/2 + 'px'});
    };

    //禁止选中对话框内容
    if(document.attachEvent) {//ie的事件监听,拖拽div时禁止选中内容,firefox与chrome已在css中设置过-moz-user-select: none; -webkit-user-select: none;
    g('dialog').attachEvent('onselectstart', function() {
    return false;
    });
    }
    //声明需要用到的变量
    var mx = 0,my = 0; //鼠标x、y轴坐标(相对于left,top)
    var dx = 0,dy = 0; //对话框坐标(同上)
    var isDraging = false; //不可拖动

    //鼠标按下
    $("#move_part").mousedown(function(e){
    e = e || window.event;
    mx = e.pageX; //点击时鼠标X坐标
    my = e.pageY; //点击时鼠标Y坐标
    dx = $dialog.offset().left;
    dy = $dialog.offset().top;
    isDraging = true; //标记对话框可拖动
    });

    //鼠标移动更新窗口位置
    $(document).mousemove(function(e){
    var e = e || window.event;
    var x = e.pageX; //移动时鼠标X坐标
    var y = e.pageY; //移动时鼠标Y坐标
    if(isDraging){ //判断对话框能否拖动
    var moveX = dx + x - mx; //移动后对话框新的left值
    var moveY = dy + y - my; //移动后对话框新的top值
    //设置拖动范围
    var pageW = $(window).width();
    var pageH = $(window).height();
    var dialogW = $dialog.width();
    var dialogH = $dialog.height();
    var maxX = pageW - dialogW; //X轴可拖动最大值
    var maxY = pageH - dialogH; //Y轴可拖动最大值
    moveX = Math.min(Math.max(0,moveX),maxX); //X轴可拖动范围
    moveY = Math.min(Math.max(0,moveY),maxY); //Y轴可拖动范围
    //重新设置对话框的left、top
    $dialog.css({"left":moveX + 'px',"top":moveY + 'px'});
    };
    });

    //鼠标离开
    $("#move_part").mouseup(function(){
    isDraging = false;
    });

    //点击关闭对话框
    $("#close").click(function(){
    $dialog.css("display","none");
    $mask.css("display","none");
    });

    //窗口大小改变时,对话框始终居中
    window.onresize = function(){
    autoCenter($dialog);
    };

    //通过该元素的点击事件,进行弹出层的展示
    $("#callout").click(function(){
    $dialog.css("display","block");
    $mask.css("display","block");
    autoCenter($dialog);
    });

    });

    4.html页面上点击的按钮,点击该按钮显示弹出层

    <input id="callout" type="button" value="弹出层测试" >

  • 相关阅读:
    设计模式之单例模式
    设计模式之原型模式
    设计模式之建造者模式
    设计模式之抽象方法模式
    设计模式之简单工厂模式
    java中内存分配
    java引用类型
    Oracle
    Oracle
    Oracle
  • 原文地址:https://www.cnblogs.com/web424/p/12490949.html
Copyright © 2020-2023  润新知