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 相关文章推荐
jquery+json实现的搜索加分页效果
Mar 31 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
Feb 26 Javascript
setTimeout函数兼容各主流浏览器运行执行效果实例
Jun 13 Javascript
Javascript动态引用CSS文件的2种方法介绍
Jun 06 Javascript
js判断变量初始化的三种形式及推荐用的形式
Jul 22 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
Sep 09 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
Aug 31 Javascript
jquery实现可自动判断位置的弹出层效果代码
Oct 12 Javascript
Jquery使用小技巧汇总
Dec 29 Javascript
AngularJs中route的使用方法和配置
Feb 04 Javascript
Angular2 父子组件数据通信实例
Jun 22 Javascript
详解如何使用Node.js实现热重载页面
May 06 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目录导航文件代码
2006/10/09 PHP
微博短链接算法php版本实现代码
2012/09/15 PHP
PHP连接Access数据库的方法小结
2013/06/20 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
Javascript学习笔记二 之 变量
2010/12/15 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
Angular.js 4.x中表单Template-Driven Forms详解
2017/04/25 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
js 取消页面可以选中文字的功能方法
2018/01/02 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
Python的面向对象编程方式学习笔记
2016/07/12 Python
python绘制简单折线图代码示例
2017/12/19 Python
python监控进程脚本
2018/04/12 Python
Python图像处理之识别图像中的文字(实例讲解)
2018/05/10 Python
python实现linux下抓包并存库功能
2018/07/18 Python
关于python 的legend图例,参数使用说明
2020/04/17 Python
python如何安装下载后的模块
2020/07/03 Python
Python3爬虫里关于代理的设置总结
2020/07/30 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
2020/11/28 Python
CSS3绘制超炫的上下起伏波动进度加载动画
2016/04/21 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
暑假家长评语大全
2014/04/17 职场文书
小学生综合素质评语
2014/04/23 职场文书
最美家庭活动方案
2014/08/31 职场文书
个人学习总结范文
2015/02/15 职场文书
法院个人总结
2015/03/03 职场文书
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python