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 相关文章推荐
通过Unicode转义序列来加密,按你说的可以算是混淆吧
May 06 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
Jan 15 Javascript
浅谈JS中逗号运算符的用法
Jun 12 Javascript
完美解决jQuery 鼠标快速滑过后,会执行多次滑出的问题
Dec 08 Javascript
JavaScript获取当前时间向前推三个月的方法示例
Feb 04 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
Mar 02 Javascript
微信小程序实现移动端滑动分页效果(ajax)
Jun 13 Javascript
浅谈如何使用webpack构建多页面应用
May 30 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
js实现黑白div块画空心的图形
Dec 13 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
Aug 27 Javascript
ant-design-vue 快速避坑指南(推荐)
Jan 21 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
[转帖]PHP世纪万年历
2006/12/06 PHP
PHP获取网卡地址的代码
2008/04/09 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
js constructor的实际作用分析
2011/11/15 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
AngularJS实现自定义指令与控制器数据交互的方法示例
2017/06/19 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
2017/10/21 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
JS将网址url转化为JSON格式的方法
2018/07/02 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
2018/11/05 Javascript
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python面向对象编程基础解析(一)
2017/10/26 Python
python实现桌面壁纸切换功能
2019/01/21 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
tensorflow生成多个tfrecord文件实例
2020/02/17 Python
django admin管理工具自定义时间区间筛选器DateRangeFilter介绍
2020/05/19 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
欧铁通票官方在线销售网站:Eurail.com
2017/10/14 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
行政专员岗位职责
2014/01/02 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
学校消防安全制度
2014/01/30 职场文书
学校后勤岗位职责
2014/02/19 职场文书
工商企业管理专业自荐信范文
2014/04/12 职场文书
学生自我评语大全
2014/04/18 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
海洋科学专业求职信
2014/08/10 职场文书
销售辞职信范文
2015/03/02 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书