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 16 Javascript
基于JQuery的asp.net树实现代码
Nov 30 Javascript
jquery trim() 功能源代码
Feb 14 Javascript
Asp.Net alert弹出提示信息的几种方法总结
Jan 29 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
JS实现动态移动层及拖动浮层关闭的方法
Apr 30 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
Jan 09 Javascript
js密码强度实时检测代码
Mar 02 Javascript
vue绑定class与行间样式style详解
Aug 16 Javascript
AngularJS下$http服务Post方法传递json参数的实例
Mar 29 Javascript
Vue 重置组件到初始状态的方法示例
Oct 10 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
Aug 28 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开发中的安全防范知识详解
2013/06/06 PHP
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
客户端js性能优化小技巧整理
2013/11/05 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
BootStrap中的表单大全
2016/09/07 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
利用python计算时间差(返回天数)
2019/09/07 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
解决python ThreadPoolExecutor 线程池中的异常捕获问题
2020/04/08 Python
python如何实现图片压缩
2020/09/11 Python
python批量生成条形码的示例
2020/10/10 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
美国网上订购鲜花:FTD
2016/09/23 全球购物
毕业自荐书
2013/12/09 职场文书
青春无悔演讲稿
2014/05/08 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python