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 XMLHttpRequest对象全面剖析
Apr 24 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
Feb 14 Javascript
javascript 获取网页标题代码实例
Jan 22 Javascript
$(&quot;&quot;).click与onclick的区别示例介绍
Sep 25 Javascript
JavaScript浏览器对象之一Window对象详解
Jun 03 Javascript
angular2中使用第三方js库的实例
Feb 26 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
Mar 08 Javascript
JS点击动态添加标签、删除指定标签的代码
Apr 18 Javascript
详解Vue底部导航栏组件
May 02 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
Jul 30 Javascript
Vue3为什么这么快
Sep 23 Javascript
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
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
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
JQuery 学习技巧总结
2010/05/21 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
jquery实现预览提交的表单代码分享
2014/05/21 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
关于ES6箭头函数中的this问题
2018/02/27 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
vue实现图片上传到后台
2020/06/29 Javascript
小程序实现录音功能
2020/09/22 Javascript
用js实现放大镜效果
2020/10/28 Javascript
python中stdout输出不缓存的设置方法
2014/05/29 Python
go语言计算两个时间的时间差方法
2015/03/13 Python
Python命令行click参数用法解析
2019/12/19 Python
Python中base64与xml取值结合问题
2019/12/22 Python
如何基于python实现归一化处理
2020/01/20 Python
python如何快速生成时间戳
2020/07/21 Python
python实现xml转json文件的示例代码
2020/12/30 Python
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
UGG英国官方网站:UGG UK
2018/02/08 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
综合实践活动报告
2015/02/05 职场文书
教师师德表现自我评价
2015/03/05 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python