欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JS实现的模仿QQ头像资料卡显示与隐藏效果

程序员文章站 2022-07-06 12:34:47
本文实例讲述了js实现的模仿qq头像资料卡显示与隐藏效果。分享给大家供大家参考,具体如下: 我们使用qq时经常需要查看朋友的资料卡,当我们把鼠标移入头像时,资料卡显示,并...

本文实例讲述了js实现的模仿qq头像资料卡显示与隐藏效果。分享给大家供大家参考,具体如下:

我们使用qq时经常需要查看朋友的资料卡,当我们把鼠标移入头像时,资料卡显示,并且鼠标能在头像与资料卡之间能随意移动,当鼠标移出头像或资料卡时,资料卡延时隐藏。

实质就是延时提示框问题!

JS实现的模仿QQ头像资料卡显示与隐藏效果

首先写好布局

<style>
    div { float:left; margin:5px; }
    .head { width:50px;height:50px;background-color:pink; }
    .info { width:250px;height:200px;background-color:blue;display:none; }
</style>
<div>
  <div class="head"></div>
  <div class="info"></div>
</div>

其次js部分

思路:

(1)鼠标移入头像,资料卡显示;鼠标移出头像,资料卡延时隐藏settimeout
(2)鼠标移入资料卡,资料卡仍显示,并清除资料卡延时隐藏的变量
(3)鼠标移出资料卡,资料卡延时隐藏,并且此时如果在移入到头像中,资料卡扔显示,并清除资料卡延时隐藏的变量

window.onload =function(){
    var ohead = document.getelementsbyclassname("head")[0];
    var oinfo = document.getelementsbyclassname("info")[0];
    var timer = null;
    ohead.onmouseover=function(){
      cleartimeout(timer);
      oinfo.style.display="block";
    };
    ohead.onmouseout=function(){
      timer = settimeout(function(){
        oinfo.style.display="none";
      },500);
    };
    oinfo.onmouseover=function(){
      cleartimeout(timer);
      oinfo.style.display="block";
    };
    oinfo.onmouseout=function(){
      timer = settimeout(function(){
        oinfo.style.display="none";
      },500);
    };
};

优化代码:

oinfo.onmouseover = ohead.onmouseover=function(){
  cleartimeout(timer);
  oinfo.style.display="block";
};
oinfo.onmouseout = ohead.onmouseout=function(){
  timer = settimeout(function(){
    oinfo.style.display="none";
  },500);
};

函数封装:

注意:事件 .xx 等于 [“xx”]

第一种:函数外获取变量,调用函数,适用于一个或两个元素调用此事件

window.onload =function(){
  var ohead = document.getelementsbyclassname("head")[0];
  var oinfo = document.getelementsbyclassname("info")[0];
  reminder(ohead,oinfo,"onmouseover","onmouseout");
  function reminder (div1,div2,event1,event2){
    var timer = null;
    div1[event1] = div2[event1]=function(){
     cleartimeout(timer);
     div2.style.display="block";
    };
    div1[event2] = div2[event2]=function(){
     timer = settimeout(function(){
      div2.style.display="none";
     },500);
    };
  }
};

第二种:函数外获取变量,调用函数,适用于多个元素调用此事件

window.onload =function(){
  var number=0;
  reminder("head","info","onmouseover","onmouseout",number);
  function reminder (div1,div2,event1,event2,num){
    var ohead = document.getelementsbyclassname(div1)[num];
    var oinfo = document.getelementsbyclassname(div2)[num];
    var timer = null;
    ohead[event1] = oinfo[event1]=function(){
     cleartimeout(timer);
     oinfo.style.display="block";
    };
    ohead[event2] = oinfo[event2]=function(){
     timer = settimeout(function(){
      oinfo.style.display="none";
     },500);
    };
  }
};

比如,一共有三个头像的话,就可以用for循环遍历为每个元素绑定事件:

var number=null;
for(number=0;number<3;number++){
   reminder("head","info","onmouseover","onmouseout",number);
}

更多关于javascript相关内容感兴趣的读者可查看本站专题:《javascript切换特效与技巧总结》、《javascript查找算法技巧总结》、《javascript动画特效与技巧汇总》、《javascript错误与调试技巧总结》、《javascript数据结构与算法技巧总结》、《javascript遍历算法与技巧总结》及《javascript数学运算用法总结

希望本文所述对大家javascript程序设计有所帮助。