JavaScript - 弹出层

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <title>popup.html</title>
        <style>
        * {
            margin: 0;
        }
        
        body {
            font-size: 9pt;
        }
        
        #container div {
            margin-top: 6px;
        }
        
        #select_city h3 {
            float: left;
        }
        
        #main_city,#all_province {
            clear: both;
        }
        
        #main_city div,#all_province div {
            width: 588px;
            clear: left;
        }
        
        #main_city h4,#all_province h4 {
            float: left;
            display: inline;
            font-size: 16px;
        }
        
        #main_city div span,#all_province div span {
            margin: 0 9px;
            cursor: pointer;
            font-size: 14px;
        }
        
        #float_lay {
            width: 220px;
            height: 122px;
            border: 1px #787878 solid;
            position: absolute;
            background: #fff;
            z-index: 999;
            display: none;
        }
        </style>
        <script type="text/javascript">
        //弹出层
        function openLayer(objId, conId) {
            var arrayPageSize = getPageSize();//调用getPageSize()函数
            var arrayPageScroll = getPageScroll();//调用getPageScroll()函数
            if (!document.getElementById("popupAddr")) {
                //创建弹出内容层
                var popupDiv = document.createElement("div");
                //给这个元素设置属性与样式
                popupDiv.setAttribute("id", "popupAddr")
                popupDiv.style.position = "absolute";
                popupDiv.style.border = "1px solid #ccc";
                popupDiv.style.background = "#fff";
                popupDiv.style.zIndex = 99;
                //创建弹出背景层
                var bodyBack = document.createElement("div");
                bodyBack.setAttribute("id", "bodybg")
                bodyBack.style.position = "absolute";
                bodyBack.style.width = "100%";
                bodyBack.style.height = (arrayPageSize[1] + 35 + 'px');
                bodyBack.style.zIndex = 98;
                bodyBack.style.top = 0;
                bodyBack.style.left = 0;
                bodyBack.style.filter = "alpha(opacity=50)";
                bodyBack.style.opacity = 0.5;
                bodyBack.style.background = "#ddf";
                //实现弹出(插入到目标元素之后)
                var mybody = document.getElementById(objId);
                insertAfter(popupDiv, mybody);//执行函数insertAfter()
                insertAfter(bodyBack, mybody);//执行函数insertAfter()
            }
            //显示背景层
            document.getElementById("bodybg").style.display = "";
            //显示内容层
            var popObj = document.getElementById("popupAddr")
            popObj.innerHTML = document.getElementById(conId).innerHTML;
            popObj.style.display = "";
            //让弹出层在页面中垂直左右居中(统一)
            // popObj.style.width  = "600px";
            // popObj.style.height = "400px";
            // popObj.style.top  = arrayPageScroll[1] + (arrayPageSize[3] - 35 - 400) / 2 + 'px';
            // popObj.style.left = (arrayPageSize[0] - 20 - 600) / 2 + 'px';
            //让弹出层在页面中垂直左右居中(个性)
            var arrayConSize = getConSize(conId)
            popObj.style.top = arrayPageScroll[1] + (arrayPageSize[3] - arrayConSize[1]) / 2 - 50 + 'px';
            popObj.style.left = (arrayPageSize[0] - arrayConSize[0]) / 2 - 30 + 'px';
        }
        //获取内容层内容原始尺寸
        function getConSize(conId) {
            var conObj = document.getElementById(conId)
            conObj.style.position = "absolute";
            conObj.style.left = -1000 + "px";
            conObj.style.display = "";
            var arrayConSize = [ conObj.offsetWidth, conObj.offsetHeight ]
            conObj.style.display = "none";
            return arrayConSize;
        }
        function insertAfter(newElement, targetElement) {//插入
            var parent = targetElement.parentNode;
            if (parent.lastChild == targetElement) {
                parent.appendChild(newElement);
            } else {
                parent.insertBefore(newElement, targetElement.nextSibling);
            }
        }
        //获取滚动条的高度
        function getPageScroll() {
            var yScroll;
            if (self.pageYOffset) {
                yScroll = self.pageYOffset;
            } else if (document.documentElement && document.documentElement.scrollTop) {
                yScroll = document.documentElement.scrollTop;
            } else if (document.body) {
                yScroll = document.body.scrollTop;
            }
            arrayPageScroll = new Array('', yScroll)
            return arrayPageScroll;
        }
        //获取页面实际大小
        function getPageSize() {
            var xScroll, yScroll;
            if (window.innerHeight && window.scrollMaxY) {
                xScroll = document.body.scrollWidth;
                yScroll = window.innerHeight + window.scrollMaxY;
            } else if (document.body.scrollHeight > document.body.offsetHeight) {
                sScroll = document.body.scrollWidth;
                yScroll = document.body.scrollHeight;
            } else {
                xScroll = document.body.offsetWidth;
                yScroll = document.body.offsetHeight;
            }
            var windowWidth, windowHeight;
            if (self.innerHeight) {
                windowWidth = self.innerWidth;
                windowHeight = self.innerHeight;
            } else if (document.documentElement
                    && document.documentElement.clientHeight) {
                windowWidth = document.documentElement.clientWidth;
                windowHeight = document.documentElement.clientHeight;
            } else if (document.body) {
                windowWidth = document.body.clientWidth;
                windowHeight = document.body.clientHeight;
            }
            var pageWidth, pageHeight
            if (yScroll < windowHeight) {
                pageHeight = windowHeight;
            } else {
                pageHeight = yScroll;
            }
            if (xScroll < windowWidth) {
                pageWidth = windowWidth;
            } else {
                pageWidth = xScroll;
            }
            arrayPageSize = new Array(pageWidth, pageHeight, windowWidth, windowHeight)
            return arrayPageSize;
        }
        //关闭弹出层
        function closeLayer() {
            document.getElementById("popupAddr").style.display = "none";
            document.getElementById("bodybg").style.display = "none";
            return false;
        }
        </script>
                <script type="text/javascript">
        //对"拖动点"定义:onMousedown="StartDrag(this)" onMouseup="StopDrag(this)" onMousemove="Drag(this)"即可
        var move = false, oldcolor, _X, _Y;
        function StartDrag(obj) { //定义准备拖拽的函数
            obj.setCapture(); //对当前对象的鼠标动作进行跟踪
            oldcolor = obj.style.backgroundColor;
            obj.style.background = "#999";
            move = true;
            //获取鼠标相对内容层坐标
            var parentwin = document.getElementById("popupAddr");
            _X = parentwin.offsetLeft - event.clientX
            _Y = parentwin.offsetTop - event.clientY
        }
        function Drag(obj) { //定义拖拽函数
            if (move) {
                var parentwin = document.getElementById("popupAddr");
                parentwin.style.left = event.clientX + _X;
                parentwin.style.top = event.clientY + _Y;
            }
        }
        function StopDrag(obj) { //定义停止拖拽函数
            obj.style.background = oldcolor;
            obj.releaseCapture(); //停止对当前对象的鼠标跟踪
            move = false;
        }
        </script>
    </head>
    <body>
        <input name="Input" id="test" value="点击弹出层" type="button" οnclick="openLayer('test','test_con')" />
        <div id="test_con" style="display: none">
            <div id="tab" style="padding: 8px;">
                <div id="tabtop">
                    <div id="tabtop-L">
                        <strong>层的标题在这里</strong>
                    </div>
                    <div id="tabtop-R" οnclick="closeLayer()">
                        <strong>[关闭层]</strong>
                    </div>
                </div>
                <div id="tabcontent">
                    内容写在这里。。
                </div>
            </div>
        </div>
        <br>
        <br>
        <input name="Input" id="test3" value="可拖动层" type="button" οnclick="openLayer('test3','test_con3')" />
        <div id="test_con3" style="display: none">
            <div id="tab3" style="width: 360px; height: 200px; background: #fee;">
                <div id="tabtop3">
                    <div id="tabtop-L3" onMousedown="StartDrag(this)"
                        onMouseup="StopDrag(this)" onMousemove="Drag(this)">
                        <strong style="color: red; font-size: 20px">可拖动层的标题</strong>
                    </div>
                    <div id="tabtop-R3" οnclick="closeLayer()">
                        <strong>[关闭层]</strong>
                    </div>
                </div>
                <div id="tabcontent3" style="padding: 8px">
                    欢迎回来
                </div>
            </div>
        </div>
    </body>
</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值