创建基于悬停的弹出信息窗口

问题描述:当鼠标滑过图片时,显示缩略图的信息

<!DOCTYPE html>
<html>
<head>
    <title>弹出框</title>
    <style>
    img{
        width: 200px;
        height: 150px;
    }
    .popup{
        position: absolute;
        border:1px solid #ccc;
    }
    </style>
</head>
<body>
<div>
    <img id="1" src="1.jpg" alt="图片1">
    <img id="2" src="2.jpg" alt="图片2">
    <img id="3" src="3.jpg" alt="图片3">
    <img id="4" src="4.jpg" alt="图片4">
</div>
<script type="text/javascript">
window.onload = function(){
    var imgs = document.getElementsByTagName("img");
    for(var i =0;i<imgs.length;i++){
        imgs[i].addEventListener("mouseover",getInfo, false);
        imgs[i].addEventListener("mouseout",removeWindow,false);
    }
}
function getInfo(){
    xmlhttp = new XMLHttpRequest();
    //准备请求
    if(xmlhttp){
        //xmlhttp = new XMLHttpRequest();
        var value = this.getAttribute("id");
        var url = "https://img-blog.csdn.net/20170807162450659?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhbnRvdXh1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center";
        xmlhttp.open('Post',url,true);
        xmlhttp.onreadystatechange = showWindow;
        xmlhttp.send(null);
        return false;
    }
}
//计算弹出的位置
function comPos(obj){
    var rect = obj.getBoundingClientRect();
    console.log(rect);
    var height ;
    if(rect.height){
        height = rect.height;
    }else{
        height = rect.bottom - rect.top;
    }
    var top = rect.top +height +10;
    return [rect.left,top];
}
//处理返回
function showWindow(){
    if(xmlhttp.readyState ==4 && xmlhttp.status ==200){
        var response = xmlhttp.responseText.split("#");
        var img = document.getElementById("3");
        console.log(img);
        if(!img) return;
        //派生弹出的位置
        var loc = comPos(img);
        var left = loc[0]+'px';
        var top = loc[0]+'px';
        //创建弹出
        var div = document.createElement("popup");
        div.id = "popup";
        //
        //var txt = document.createTextNode(response[1]);
        var txt =document.createTextNode("text");
        div.appendChild(txt);
        //样式化弹出
        div.setAttribute("class","popup");
        div.setAttribute("style","left:"+left +";top:"+top);
        document.body.appendChild(div);
    }
}
function removeWindow(){
    var popup = document.getElementById("popup");
    if(popup){
        popup.parentNode.removeChild(popup);
    }
    return false;
}
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值