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 相关文章推荐
tbody元素支持嵌套的注意方法
Mar 24 Javascript
Jquery乱码的一次解决过程 图解教程
Feb 20 Javascript
js中function()使用方法
Dec 24 Javascript
js style动态设置table高度
Oct 21 Javascript
node.js使用npm 安装插件时提示install Error: ENOENT报错的解决方法
Nov 20 Javascript
JavaScript结合AJAX_stream实现流式显示
Jan 08 Javascript
jQuery插件开发的五种形态小结
Mar 04 Javascript
JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)
Mar 25 Javascript
react native带索引的城市列表组件的实例代码
Aug 08 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 jQuery
laydate时间日历插件使用方法详解
Nov 14 Javascript
JavaScript对象属性操作实例解析
Feb 04 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
用PHP实现图象锐化代码
2007/06/14 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
php支持中文字符串分割的函数
2015/05/28 PHP
浅谈php错误提示及查错方法
2015/07/14 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
超级强大的表单验证
2006/06/26 Javascript
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python 基础之字符串string详解及实例
2017/04/01 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Python装饰器限制函数运行时间超时则退出执行
2019/04/09 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
python如何安装下载后的模块
2020/07/03 Python
django跳转页面传参的实现
2020/09/17 Python
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
员工年终演讲稿
2014/01/03 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
校园演讲稿汇总
2014/05/21 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
小学英语教师研修感悟
2015/11/18 职场文书
怎么用Python识别手势数字
2021/06/07 Python
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫