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 相关文章推荐
Maps Javascript
Jan 22 Javascript
js监听滚动条滚动事件使得某个标签内容始终位于同一位置
Jan 24 Javascript
javascript常用的方法整理
Aug 20 Javascript
关于cookie的初识和运用(js和jq)
Apr 07 Javascript
原生 JS Ajax,GET和POST 请求实例代码
Jun 08 Javascript
最简单纯JavaScript实现Tab标签页切换的方式(推荐)
Jul 25 Javascript
基于JavaScript实现树形下拉框
Aug 10 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Dec 14 Javascript
JavaScript实现计数器基础方法
Oct 10 Javascript
jQuery中的for循环var与let的区别
Apr 21 jQuery
使用layer模态框给新页面传值的方法
Sep 27 Javascript
vue项目接口域名动态获取操作
Aug 13 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正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
ThinkPHP5&amp;5.1实现验证码的生成、使用及点击刷新功能示例
2020/02/07 PHP
一个简单的js树形菜单
2011/12/09 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
jQuery中layer分页器的使用
2017/03/13 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
2017/05/04 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Python字符遍历的艺术
2008/09/06 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
Python docx库用法示例分析
2019/02/16 Python
python设计tcp数据包协议类的例子
2019/07/23 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
Python交互环境下打印和输入函数的实例内容
2020/02/16 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
如何更换python默认编辑器的背景色
2020/08/10 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
澳大利亚窗帘商店:Curtain Wonderland
2019/12/01 全球购物
先进工作者获奖感言
2014/02/08 职场文书
手工社团活动方案
2014/02/17 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
工资证明范本
2015/06/12 职场文书