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 乱码问题
Aug 06 Javascript
jQuery开发者都需要知道的5个小技巧
Jan 08 Javascript
js选取多个或单个元素的实现代码(用class)
Aug 22 Javascript
jQuery之Deferred对象详解
Sep 04 Javascript
js实现一个链接打开两个链接地址的方法
May 12 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
Mar 25 Javascript
JavaScript来实现打开链接页面的简单实例
Jun 02 Javascript
JavaScript计算器网页版实现代码分享
Jul 15 Javascript
vue中简单弹框dialog的实现方法
Feb 26 Javascript
JavaScript中为事件指定处理程序的五种方式分析
Jul 27 Javascript
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
Vue3不支持Filters过滤器的问题
Sep 24 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
PHP4.04简明安装
2006/10/09 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
2019/10/17 PHP
实用javaScript技术-屏蔽类
2006/08/15 Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
JavaScript中setAttribute用法介绍
2013/07/20 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
详解webpack分包及异步加载套路
2017/06/29 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
JavaScript实现的DOM绘制柱状图效果示例
2018/08/08 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
set在python里的含义和用法
2019/06/24 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
mac使用python识别图形验证码功能
2020/01/10 Python
详解pandas绘制矩阵散点图(scatter_matrix)的方法
2020/04/23 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
Stuarts London美国/加拿大:世界领先的独立男装零售商之一
2019/03/18 全球购物
AJAX都有哪些有点和缺点
2012/11/03 面试题
农民工工资支付承诺函
2014/03/31 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
2016教师校本研修心得体会
2016/01/08 职场文书
Go 语言结构实例分析
2021/07/04 Golang