zoukankan      html  css  js  c++  java
  • JS弹窗——点击/滚动/缩放居中

    CSS代码:

    #mask {background: black; opacity: 0.3; filter: alpha(opacity=30); position: absolute; left: 0; top: 0; display: none;}
    #box { width: 300px; height: 200px; padding: 10px; background: white; border: 5px solid #333; position: absolute; display: none;}
    #close { position: absolute; right: 5px; top: 5px; text-decoration: none; color: black;}
    #close:hover {background: #333; color: white;}

    HTML代码:

    <body style="height:2000px;">
        <input type="button" value="登陆" id="btn" />
        
        <div id="mask"></div>
        <div id="box">
            <a href="javascript:;" id="close">×</a>
            内容显示区域
        </div>
    </body>

    JS代码:

    window.onload = function(){
            var oBtn = document.getElementById('btn');
            var oMask = document.getElementById('mask');
            var oBox = document.getElementById('box');
            var oClose = document.getElementById('close');
    
            oClose.onclick = function(){
                oMask.style.display = 'none';
                oBox.style.display = 'none';
            };
    
            //点击按钮居中显示
            oBtn.onclick = function(){
                var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
                var scrollLeft = document.documentElement.scrollLeft || document.body .scrollLeft;
    
                oMask.style.display = 'block';
                oMask.style.width = Math.max(document.body.offsetWidth ,document.documentElement.clientWidth) + 'px';
                oMask.style.height = Math.max(document.body.offsetHeight ,document.documentElement.clientHeight) + 'px';
    
                oBox.style.display = 'block';
                oBox.style.left = (document.documentElement.clientWidth - oBox.offsetWidth)/2 + scrollLeft + 'px';
                oBox.style.top = (document.documentElement.clientHeight - oBox.offsetHeight)/2 + scrollTop + 'px';
    
            };
    
            //拖动滚动条居中显示
            window.onscroll = function(){
                if(oBox.style.display == 'none') return;
    
                var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
                var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
    
                oBox.style.left = (document.documentElement.clientWidth - oBox.offsetWidth)/2 + scrollLeft + 'px';
                oBox.style.top = (document.documentElement.clientHeight - oBox.offsetHeight)/2 + scrollTop + 'px';
            };
    
            //缩放窗口居中显示
            window.onresize = function(){
                if(oMask.style.display == 'none') return;
    
                oMask.style.left = Math.max(document.body.offsetWidth ,document.documentElement.clientWidth);
                oMask.style.top = Math.max(document.body.offsetHeight,document.documentElement.clientHeight);
    
                if(oBox.style.display == 'none') return;
    
                var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
                var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    
                oBox.style.left = (document.documentElement.clientWidth - oBox.offsetWidth)/2 + scrollLeft + 'px';
                oBox.style.top = (document.documentElement.clientHeight -oBox.offsetHeight)/2 + scrollTop + 'px';
            };
    
        };
  • 相关阅读:
    包装器
    高级new创建
    野性的呼唤 第三章
    SourceTree的基本使用
    SAP的春天回来么?
    dirname命令和basename命令
    一个简单的ETL脚本的内容
    轮子:读取config.ini文件
    sed基础语法
    hivesql之str_to_map函数
  • 原文地址:https://www.cnblogs.com/bokebi520/p/4334485.html
Copyright © 2011-2022 走看看