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 this关键字使用分析
Oct 21 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
Mar 28 Javascript
jquery在Chrome下获取图片的长宽问题解决
Mar 20 Javascript
JavaScript面向对象编程入门教程
Apr 16 Javascript
JS获取网页图片name属性的方法
Apr 01 Javascript
实例代码详解jquery.slides.js
Nov 16 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
Jun 03 Javascript
jQuery Validate插件实现表单验证
Aug 19 Javascript
jQuery+HTML5实现弹出创意搜索框层
Dec 29 Javascript
优化Vue项目编译文件大小的方法步骤
May 27 Javascript
vue data恢复初始化数据的实现方法
Oct 31 Javascript
vue2.0 watch里面的 deep和immediate用法说明
Oct 30 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
用libtemplate实现静态网页生成
2006/10/09 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
php中error与exception的区别及应用
2014/07/28 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
php实现JWT(json web token)鉴权实例详解
2019/11/05 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
JavaScript 语言的递归编程
2010/05/18 Javascript
图片img的src不变让浏览器重新加载实现方法
2013/03/29 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
js HTML5 Ajax实现文件上传进度条功能
2016/02/13 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
vue生命周期的探索
2019/04/03 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
python获取指定网页上所有超链接的方法
2015/04/04 Python
python 统计代码行数简单实例
2017/05/04 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
用python制作个音乐下载器
2021/01/30 Python
在HTML5 Canvas中放入图片和保存为图片的方法
2014/05/03 HTML / CSS
html5简单示例_动力节点Java学院整理
2017/07/07 HTML / CSS
医学生自我鉴定范文
2013/11/08 职场文书
仓库主管岗位职责
2014/03/02 职场文书
小学教师暑期培训方案
2014/08/28 职场文书
我的中国梦主题班会
2015/08/14 职场文书
党员心得体会范文2016
2016/01/23 职场文书
MySQL 可扩展设计的基本原则
2021/05/14 MySQL