zoukankan      html  css  js  c++  java
  • 记录一个简单的可以拖动的弹出层

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

    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="弹出层测试" >

  • 相关阅读:
    UOJ #455 [UER #8]雪灾与外卖 (贪心、模拟费用流)
    Codeforces 482E ELCA (LCT)
    Codeforces 798D Mike and distribution (构造)
    AtCoder AGC017C Snuke and Spells
    HDU 6089 Rikka with Terrorist (线段树)
    HDU 6136 Death Podracing (堆)
    AtCoder AGC032D Rotation Sort (DP)
    jenkins+python+kubectl实现批量更新k8s镜像
    Linux 下载最新kubectl版本的命令:
    jenkins X 和k8s CI/CD
  • 原文地址:https://www.cnblogs.com/web424/p/12490949.html
Copyright © 2011-2022 走看看