不同位置上弹窗变化

<!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>
时间: 2024-10-06 09:17:02

不同位置上弹窗变化的相关文章

【转载】[JS]让表单提交返回后保持在原来提交的位置上

有时候,在网页中点击了页面中的按钮或是刷新了页面后,页面滚动条又 会回到顶部,想看后面的记录就又要拖动滚动条,或者要按翻页键,非常不方便,想在提交页面或者在页面刷新的时候仍然保持滚动条的位置不变,最好的办法就是 在JS中用cookie记录下当前滚动条的位置,然后刷新时读取cookie就可以实现这个功能了.代码如下:<script type="text/javascript"> function Trim(strValue) { //return strValue.repla

Centos7系统配置上的变化(二)网络管理基础

原文 Centos7系统配置上的变化(二)网络管理基础 上篇简单介绍了CentOS 7 在服务和网络方面的一点变化,先前很多烂熟于心的操作指令已经不适用了,不管是否习惯,总要接受.熟悉这些变化. 写上篇的时候还没有最小安装的ISO(CentOS-7.0-1406-x86_64-Minimal.iso),后来安装了首先发现ifconfig.netstat.route.arp都没有了,在哪儿呢? view sourceprint? 1.[root@centos7 ~]# yum search ifc

Centos7系统配置上的变化(一)

原文 Centos7系统配置上的变化(一) 安装后,一开始有点儿无力吐槽的感觉,变化这么大? 一.Runlevel 首先一条,原来一直用的CentOS-6.5-x86_64-minimal.iso光盘镜像(400M左右无图形系统小巧便捷),而7目前最小的镜像是CentOS-7.0-1406-x86_64-livecd.iso(700M左右),默认安装后是启动图形界面,按原来的习惯要改成启动命令行,结果发现: view sourceprint? 01.[root@localhost ~]# cat

(hdu step 4.1.5)find the nth digit(求S串中的第n个位置上是什么数字)

题目: find the nth digit Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 689 Accepted Submission(s): 244   Problem Description 假设:S1 = 1S2 = 12S3 = 123S4 = 1234.........S9 = 123456789S10 = 123456789

二、给定一个 n 行 m 列的地牢,其中 &#39;.&#39; 表示可以通行的位置,&#39;X&#39; 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上。地牢的出口可能在任意某个可以通行的位置上。牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢。

给定一个 n 行 m 列的地牢,其中 '.' 表示可以通行的位置,'X' 表示不可通行的障碍,牛牛从 (x0 , y0 ) 位置出发,遍历这个地牢,和一般的游戏所不同的是,他每一步只能按照一些指定的步长遍历地牢,要求每一步都不可以超过地牢的边界,也不能到达障碍上.地牢的出口可能在任意某个可以通行的位置上.牛牛想知道最坏情况下,他需要多少步才可以离开这个地牢. 个输入包含 1 个测试用例.每个测试用例的第一行包含两个整数 n 和 m(1 <= n, m <= 50),表示地牢的长和宽.接下来的

图片淡入淡出代码,鼠标移上透明度变化

又一个图片透明度特效,鼠标移在图片上,图片的透明度就发生变化,最初的透明度为20,鼠标移上后透明度恢复正常,很明显的响应鼠标的图片特效,而且代码超简单,新手也能学会使用. <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>石家庄伸缩门</title> </head>

c语言题目:找出一个二维数组的“鞍点”,即该位置上的元素在该行上最大,在该列上最小。也可能没有鞍点

1 //题目:找出一个二维数组的"鞍点",即该位置上的元素在该行上最大,在该列上最小.也可能没有鞍点. 2 // 3 #include "stdio.h" 4 #include <stdlib.h> 5 int main() 6 { 7 int i,j,k,hang=1,lie=1; 8 printf("输入行"); 9 scanf("%d",&hang); 10 printf("输入列"

获悉文件服务器上的变化和数据访问情况,推荐使用NetWrix文件服务器免费变更通知工具

获悉文件服务器上的变化和数据访问情况 推荐使用NetWrix文件服务器免费变更通知工具 文件服务器(fs服务器)是指在计算机局域网中,以文件数据共享为目标,需要将供多台计算机共享的文件存放于一台计算机中.具有分时系统文件管理的全部功能,提供网络用户访问文件.能够对全网统一管理,能够提供网络用户访问文件.目录的并发控制和安全保密措施的局域网(LAN)服务器.可以是一台能够运行其他应用的通用计算机,也可以是一台专门提供文件服务的专用计算机. 持续追踪文件服务器上对象的变更是非常必要的,便于你及时发现

在排序好的数组插入一个数字,数字要插入到合适的位置上

最近在看以前大一看过的一本书<JAVA开发实战经典>李兴华写的,每看一次以前看过的书,收获都是不一样的,很多东西以前不明白,现在一看恍然大悟的感觉: 这道题目是书上的习题,没给参考答案,我在网上也没找到好点的,就发上来,感觉这个算法还可以优化得更好,希望高手指点 // 在排序好的数组插入一个数字,数字要插入到合适的位置上 int intArr[] = { 11, 22,33, 44, 55, 66, 77}; int insertNum = 34; //找到要插入的位置 int insertI