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 相关文章推荐
Javascript入门学习资料收集整理篇
Jul 06 Javascript
用js生产批量批处理执行命令
Jul 28 Javascript
传智播客学习之java 反射
Nov 22 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
Nov 18 Javascript
jquery map方法使用示例
Apr 23 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
JS创建对象几种不同方法详解
Mar 01 Javascript
AngularJS入门教程之控制器详解
Jul 27 Javascript
Angular.js中$apply()和$digest()的深入理解
Oct 13 Javascript
完美解决axios跨域请求出错的问题
Feb 05 Javascript
vue下history模式刷新后404错误解决方法
Aug 18 Javascript
Vue实现导航栏的显示开关控制
Nov 01 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排序算法的复习和总结
2012/02/15 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
2013/03/20 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
vue完成项目后,打包成静态文件的方法
2018/09/03 Javascript
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
2020/06/23 Javascript
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
python 生成器协程运算实例
2017/09/04 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
Jupyter Notebook打开任意文件夹操作
2020/04/14 Python
浅谈css3中的前缀
2016/07/20 HTML / CSS
Dr. Martens马汀博士官网:马丁靴始祖品牌
2016/10/15 全球购物
北美大型运动类产品商城:Champs Sports
2017/01/12 全球购物
科颜氏美国官网:Kiehl’s美国
2017/01/31 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
医院实习介绍信
2014/01/12 职场文书
法学函授自我鉴定
2014/02/06 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript