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 相关文章推荐
javascript 数组排序函数
Aug 20 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
Jan 23 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
理解Javascript图片预加载
Feb 23 Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
May 12 Javascript
基于jQuery实现表格内容的筛选功能
Aug 21 Javascript
JQuery实现列表中复选框全选反选功能封装(推荐)
Nov 24 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 Javascript
Vuex中的State使用介绍
Jan 19 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
Mar 28 Javascript
JS实现按比例缩小图片宽高
Aug 24 Javascript
video.js添加自定义组件的方法
Dec 09 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
Email+URL的判断和自动转换函数
2006/10/09 PHP
一个分页的论坛
2006/10/09 PHP
火车头采集器3.0采集图文教程
2007/03/17 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php递归删除指定文件夹的方法小结
2015/04/20 PHP
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
2018/08/16 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
JS跨域总结
2012/08/30 Javascript
Extjs4.0设置Ext.data.Store传参的请求方式(默认为GET)
2013/04/02 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
深入理解JavaScript中为什么string可以拥有方法
2016/05/24 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
jQuery制作input提示内容(兼容IE8以上)
2017/07/05 jQuery
VUE中v-on:click事件中获取当前dom元素的代码
2018/08/22 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
js实现随机点名功能
2020/12/23 Javascript
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
python deque模块简单使用代码实例
2020/03/12 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
教师推荐信范文
2013/11/24 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
2015年复活节活动总结
2015/02/27 职场文书
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电