JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果


Posted in Javascript onJuly 02, 2014

基于项目的需要,需要制作出如下的一种页面效果:当用户鼠标经过好友列表中好友头像时,显示该好友的基本资料,其实也就是类似QQ客户端的那种功能。
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
网上找了很多代码,基本都实现了鼠标悬浮之后弹出div,离开之后马上就消失了。还有些纯CSS的代码实现了这样的效果,但是对我没用,我需要的是JS的(因为我的数据还要通过Ajax取得),并且鼠标离开后不能马上隐藏,这个div上还有功能入口。这个页面效果折腾了我一天,由此可见我的JS和CSS技术有待提高...

搜索了好久,终于发现了可行的2个思路如下,这2个方法有个例子,不是我写的,我也没用到,转过来分享一下,演示地址。我的方法参考了方法B的思路。

方法A:

把浮动div和触发元素a放于同一个父级元素内,鼠标经过父级元素时触发显示。这样鼠标移动到div时仍然 处于该父级元素内,则div不会隐藏。

方法B:

鼠标经过a时弹出div,鼠标离开a时设置一个计时器用来关闭div,如果鼠标移动到div后则清除计时器。
—————————————————————————————————————————————————————————————————————————————

我这个方法就是采用了上面方法B的思想,当用户离开触发事件的图像后,资料卡div要延时3秒才后关闭,用户拥有足够的时间进行相应的操作,当用户点击其他好友图像时,则会立刻调用hidden方法,将之前的打开正在计时的div关闭。

下面给出我的方法的JS代码:

//显示资料卡 
var beforeId; //定义全局变量 
function showInfoCard(thisObj,id){ 
this.hidden(beforeId); //立刻隐藏前一个选中弹出来的div 
beforeId = id; 
// alert(id); 
// var d = $(thisObj); 
// var pos = d.offset(); 
// var t = pos.top + d.height() - 5; // 弹出框的上边位置 
// var l = pos.left - d.width() - 600; // 弹出框的左边位置 
// $("#"+id).css({ "top": t, "left": l }).show(); 
// 

var objDiv = $("#"+id); 

$(objDiv).css("display","block"); 

$(objDiv).css("left", event.clientX-280); //弹出框的位置X值 

$(objDiv).css("top", event.clientY-10); //弹出框位置Y值 
} 
function hideInfoCard(id){ //隐藏div 
//延时3秒 
setTimeout('hidden('+id+')',3000); 
} 

function hidden(id){ 
$("#"+id).hide(); 
}

下面是HTML中的隐藏的div代码片段:

<div id="id" style="display:none; width:250px; height:150px; background-color:#D1EEEE;position:absolute;"></div>

在HTML中,需要调用showInfoCard和hideInfoCard方法,使用以下语句监听鼠标事件:

onmouseover="showInfoCard(this,'${friend.friendId}')" onmouseout="hideInfoCard('${friend.friendId}')"

这些都是动态的代码片段,采用的时候需要引入jquery.js框架,当然也可以修改成纯JS的。上面的完成了,AJAX取得信息,然后利用JS在上面div中插入HTML代码即可完成显示,最后来张初步的效果图,挺丑的...
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果

Javascript 相关文章推荐
学习js所必须要知道的一些
Mar 07 Javascript
JavaScript中的this实例分析
Apr 28 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
Nov 18 Javascript
原生js仿jq判断当前浏览器是否为ie,精确到ie6~8
Aug 30 Javascript
JQuery 给元素绑定click事件多次执行的解决方法
Sep 09 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
JQuery自动触发事件的方法
Jun 13 Javascript
CSS3 media queries结合jQuery实现响应式导航
Sep 30 Javascript
微信小程序 教程之引用
Oct 18 Javascript
微信小程序使用echarts获取数据并生成折线图
Oct 16 Javascript
浅谈vue 多个变量同时赋相同值互相影响
Aug 05 Javascript
vue a标签点击实现赋值方式
Sep 07 Javascript
jquery序列化表单以及回调函数的使用示例
Jul 02 #Javascript
IE8下Jquery获取select选中的值post到后台报错问题
Jul 02 #Javascript
js面向对象编程之如何实现方法重载
Jul 02 #Javascript
jquery.validate.js插件使用经验记录
Jul 02 #Javascript
escape编码与unescape解码汉字出现乱码的解决方法
Jul 02 #Javascript
js获取IP地址的方法小结
Jul 01 #Javascript
jQuery截取指定长度字符串的实现原理及代码
Jul 01 #Javascript
You might like
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
php 批量替换html标签的实例代码
2013/11/26 PHP
浅析php创建者模式
2014/11/25 PHP
smarty模板引擎中变量及变量修饰器用法实例
2015/01/22 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
PHP错误和异常处理功能模块示例
2016/11/12 PHP
Laravel框架在本地虚拟机快速安装的方法详解
2018/06/11 PHP
Lazy Load 延迟加载图片的jQuery插件中文使用文档
2012/10/18 Javascript
javascript从右边截取指定字符串的三种实现方法
2013/11/29 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
网站接入QQ登录的两种方法
2014/07/22 Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
2015/08/12 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
js实现显示手机号码效果
2017/03/09 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
Angular.js中上传指令ng-upload的基本使用教程
2017/07/30 Javascript
详解使用Typescript开发node.js项目(简单的环境配置)
2017/10/09 Javascript
微信小程序progress组件使用详解
2018/01/31 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
详解Python开发中如何使用Hook技巧
2017/11/01 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
企业统计员岗位职责
2013/12/13 职场文书
办公室文员自荐书
2014/02/03 职场文书
民主生活会对照检查材料(统计局)
2014/09/21 职场文书
2014年银行个人工作总结
2014/12/05 职场文书
护士长2015年终工作总结
2015/04/24 职场文书
三严三实·严以律己心得体会
2016/01/13 职场文书
2016年学生会感恩节活动总结
2016/04/01 职场文书
工作一年自我鉴定
2019/06/20 职场文书
python tqdm用法及实例详解
2021/06/16 Python