• 不同位置上弹窗变化


    <!DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title></title>
        <style>
            div{
                display: block;
                border:2px solid darkseagreen;
                background-color: greenyellow;
                color: gray;
                font-size: 14px;
                width: 126px;
                height: 76px;
                position: absolute;
                padding: 5px;
                /*top: 14px;*/
                /*left: 0px;*/
            }
            .top{
                display: block;
                position: absolute;
                top: -14px;
                left: 57px;
                border-bottom: 14px solid darkseagreen;
                border-left: 8px solid transparent;
                border-right: 8px solid transparent;
            }
            .right{
                display: block;
                position: absolute;
                right: -14px;
                top: 32px;
                border-bottom: 8px solid transparent;
                border-left: 14px solid darkseagreen;
                border-top: 8px solid transparent;
            }
            .left{
                display: block;
                position: absolute;
                left: -14px;
                top: 32px;
                border-bottom: 8px solid transparent;
                border-right: 14px solid darkseagreen;
                border-top: 8px solid transparent;
            }
            .bottom{
                display: block;
                position: absolute;
                bottom: -14px;
                left: 57px;
                border-top: 14px solid darkseagreen;
                border-left: 8px solid transparent;
                border-right: 8px solid transparent;
            }
        </style>
    </head>
    <body>
    <!--/*在文档中随意点击(充当对按钮的点击)显示弹框呈现样式*/-->
    <div>
        <p>随意点击弹出我,看看我有什么不同?</p>
        <span class="top"></span>
    </div>
    <script>
    document.onclick = clickStat;
    function clickStat() {
        //确定点击位置
        var e = arguments[0] || window.event;
        var x = e.clientX;
        var y = e.clientY;
        var w=window.innerWidth
                || document.documentElement.clientWidth
                || document.body.clientWidth;
        var h=window.innerHeight
                || document.documentElement.clientHeight
                || document.body.clientHeight;
    
        var o = {
            top: (y),
            left: (x),
            bottom: (h-y),
            right: (w-x)
        };
        alert("w="+w+";h="+h+";left="+ o.left+";"+"top="+ o.top+";"+"right="+ o.right+";"+"bottom="+ o.bottom);
    
        //设置弹框显示样式
        var popdiv = document.getElementsByTagName('div')[0];
        var arrowSpan = document.getElementsByTagName('span')[0];
        var popdivStyle = document.defaultView.getComputedStyle(popdiv, null);
        var arrowSpanStyle = document.defaultView.getComputedStyle(arrowSpan, null);
        var popH = parseFloat(popdivStyle.height.slice(0,-2))+14;
        var popW = parseFloat(popdivStyle.width.slice(0,-2))+14;
    //    var arrowTop = parseFloat(arrowSpanStyle.top.slice(0,-2));
    //    var arrowLeft = parseFloat(arrowSpanStyle.left.slice(0,-2));
        //判断弹框箭头的方向和箭头在弹框上的位置
        var topflag = 0,leftflag = 0,rightflag = 0,bottomflag = 0;
        if(o.bottom > popH){
            topflag = 1;
                if(o.right > popW && o.left <= popW){
                    topflag = 0;
                    leftflag = 1;
                }else if(o.right<=popW){
                        topflag = 0;
                        rightflag = 1;
                }else{
                    topflag = 1;
                }
        }else{
            bottomflag = 1;
        }
        alert("topflag="+topflag+";leftflag="+leftflag+";rightflag="+rightflag+";bottomflag"+bottomflag);
        if(bottomflag){
            arrowSpan.setAttribute("class","bottom");
            popdiv.style.top = (o.top-popH)+"px";
            popdiv.style.left = o.left+"px";
            arrowSpan.style.top = "87px";
        }else if(leftflag){
            arrowSpan.setAttribute("class","left");
            popdiv.style.left = (o.left+14)+"px";
            if(o.top<40){
                popdiv.style.top = "0px";
                arrowSpan.style.top = (o.top-8)+"px";
            }else{
                popdiv.style.top = (o.top-40)+"px";
                arrowSpan.style.top = "32px";
            }
        }else if(rightflag){
            arrowSpan.setAttribute("class","right");
            popdiv.style.left = (o.left-popW-12)+"px";
            if(o.top<40){
                popdiv.style.top = "0px";
                arrowSpan.style.top = (o.top-8)+"px";
            }else{
                popdiv.style.top = (o.top-40)+"px";
                arrowSpan.style.top = "32px";
            }
        }else{
            arrowSpan.setAttribute("class","top");
            popdiv.style.top = (o.top+14)+"px";
            popdiv.style.left = o.left+"px";
            arrowSpan.style.top = "-14px";
        }
    
    //    popdiv.style.display = popdiv.style.display=='none'?'block':'none';
    //
    }
    </script>
    </body>
    </html>
  • 相关阅读:
    献给 Python 开发人员的 25 个最佳 GitHub 代码库!
    6 drf-认证权限解析频率
    4: drf视图组件
    3 drf请求与响应
    十三:Django框架学习之auth模块
    十二:django中间件学习之拓展1
    git光速从入门到精通
    mac系统下的mysql安装(ver.8.0.20)
    python小练习——2048
    docker下overlay2占用空间过大,清理docker占用空间
  • 原文地址:https://www.cnblogs.com/jymz/p/4313852.html
Copyright © 2020-2023  润新知