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 相关文章推荐
js模仿hover的具体实现代码
Dec 30 Javascript
一个判断抢购时间是否到达的简单的js函数
Jun 23 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
Prototype框架详解
Nov 25 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
JS实现json的序列化和反序列化功能示例
Jun 13 Javascript
用JS实现简单的登录验证功能
Jul 28 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
小程序实现多选框功能
Oct 30 Javascript
微信小程序实现无限滚动列表
May 29 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 Javascript
WebRTC记录音视频流(web技术分享)
Feb 24 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/07/17 PHP
Yii清理缓存的方法
2016/01/06 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
jquery.jstree 增加节点的双击事件代码
2010/07/27 Javascript
屏蔽相应键盘按钮操作
2014/03/10 Javascript
javascript的函数作用域
2014/11/12 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
分析了一下JQuery中的extend方法实现原理
2015/02/27 Javascript
jquery ajax分页插件的简单实现
2016/01/27 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
Linux Centos7.2下安装nodejs&amp;npm配置全局路径的教程
2018/05/15 NodeJs
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
vue实现购物车列表
2020/06/30 Javascript
python merge、concat合并数据集的实例讲解
2018/04/12 Python
python 字符串只保留汉字的方法
2018/11/16 Python
python3 sorted 如何实现自定义排序标准
2020/03/12 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
Noon埃及:埃及在线购物
2019/11/26 全球购物
药学专业学生的自我评价分享
2014/02/06 职场文书
监察建议书范文
2014/03/12 职场文书
2014年租房协议书范本
2014/10/30 职场文书
中班教师个人总结
2015/02/05 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
小学大队委竞选口号
2015/12/25 职场文书
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL
Python中request的基本使用解决乱码问题
2022/04/12 Python
win10截图快捷键win+shift+s没有反应无法截图怎么解决?
2022/08/14 数码科技