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


Posted in Javascript onApril 07, 2017

本文实例讲述了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 相关文章推荐
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
Aug 15 Javascript
使用js获取图片原始尺寸
Dec 03 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
学习JavaScript设计模式(接口)
Nov 26 Javascript
jQuery实现div拖拽效果实例分析
Feb 20 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
Javascript中类式继承和原型式继承的实现方法和区别之处
Apr 25 Javascript
angular中使用Socket.io实例代码
Jun 03 Javascript
AngualrJs清除定时器遇到的坑
Oct 13 Javascript
从Vuex中取出数组赋值给新的数组,新数组push时报错的解决方法
Sep 18 Javascript
详解Vue中数组和对象更改后视图不刷新的问题
Sep 21 Javascript
详解JavaScript之Array.reduce源码解读
Nov 01 Javascript
socket.io实现在线群聊功能
Apr 07 #Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 #Javascript
微信小程序实现图片轮播及文件上传
Apr 07 #Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 #Javascript
JS仿Base.js实现的继承示例
Apr 07 #Javascript
vue-hook-form使用详解
Apr 07 #Javascript
ES6实现的遍历目录函数示例
Apr 07 #Javascript
You might like
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
jQuery开发者都需要知道的5个小技巧
2010/01/08 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
Jquery Ajax的Get方式时需要注意URL地方
2011/04/07 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
node.js中的buffer.toJSON方法使用说明
2014/12/14 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
vue.js父组件使用外部对象的方法示例
2017/04/25 Javascript
纯js实现动态时间显示
2020/09/07 Javascript
jQuery实现的简单图片轮播效果完整示例
2018/02/08 jQuery
详解NodeJS Https HSM双向认证实现
2019/03/12 NodeJs
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
python服务器端收发请求的实现代码
2014/09/29 Python
Android分包MultiDex策略详解
2017/10/30 Python
Python科学画图代码分享
2017/11/29 Python
Python实现图片拼接的代码
2018/07/02 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
Django CBV类的用法详解
2019/07/26 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
历史系毕业生自荐信
2013/10/28 职场文书
销售冠军获奖感言
2014/02/03 职场文书
农村党支部书记党群众路线四风问题整改措施
2014/09/26 职场文书
软件研发工程师岗位职责
2014/09/30 职场文书
基于python制作简易版学生信息管理系统
2021/04/20 Python
浅谈TypeScript 索引签名的理解
2021/10/16 Javascript
Python jiaba库的使用详解
2021/11/23 Python
Nginx限流和黑名单配置
2022/05/20 Servers