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解决图片缩放及其优化的代码
May 23 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
Jul 10 Javascript
JS获取随机数函数可自定义最小值最大值
May 08 Javascript
javascript解三阶幻方(九宫格)
Apr 22 Javascript
ANGULARJS中使用JQUERY分页控件
Sep 16 Javascript
jQuery过滤特殊字符及JS字符串转为数字
May 26 Javascript
javascript的函数劫持浅析
Sep 26 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
Vue项目中如何引入icon图标
Mar 28 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
Oct 28 Javascript
Javascript生成器(Generator)的介绍与使用
Jan 31 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伪造referer突破网盘禁止外连的代码
2008/06/15 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
基于jquery的表格排序
2010/09/11 Javascript
Javascript实现滑块滑动改变值的实现代码
2013/04/12 Javascript
Jquery操作radio的简单实例
2014/01/06 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
在js中做数字字符串补0(js补零)
2017/03/25 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
2017/11/17 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
Python正则表达式的使用范例详解
2014/08/08 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
Python pass详细介绍及实例代码
2016/11/24 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
python 系统调用的实例详解
2017/07/11 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
解决jupyter notebook 前面书写后面内容消失的问题
2020/04/13 Python
学习Python爬虫的几点建议
2020/08/05 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
python 写一个水果忍者游戏
2021/01/13 Python
伦敦所有西区剧院演出官方票务代理:Theatre Tickets Direct
2017/05/26 全球购物
What is view? why do we have view?
2012/06/22 面试题
校长一岗双责责任书
2015/05/09 职场文书
女性励志书籍推荐
2019/08/19 职场文书