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 相关文章推荐
jQuery bind事件使用详解
May 05 Javascript
JavaScript取得鼠标绝对位置程序代码介绍
Sep 16 Javascript
javascript面向对象包装类Class封装类库剖析
Jan 24 Javascript
Javascript与jQuery方法的隐藏与显示
Jan 19 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
JavaScript编写棋盘覆盖代码详解
Aug 28 Javascript
微信小程序动态增加按钮组件
Sep 14 Javascript
微信小程序授权登录及解密unionId出错的方法
Sep 26 Javascript
laydate时间日历插件使用方法详解
Nov 14 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
Nov 20 Javascript
Vue安装浏览器开发工具的步骤详解
May 12 Javascript
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
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
Discuz!下Memcache缓存实现方法
2010/05/28 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
2014/10/23 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
对js eval()函数的一些见解
2016/08/15 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
jQuery使用方法
2017/02/04 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
js对象属性名驼峰式转下划线的实例代码
2020/09/17 Javascript
在Windows8上的搭建Python和Django环境
2014/07/03 Python
Python中设置变量访问权限的方法
2015/04/27 Python
Python版微信红包分配算法
2015/05/04 Python
Python语法快速入门指南
2015/10/12 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
女生抽烟检讨书
2014/10/05 职场文书
党员群众路线剖析材料
2014/10/08 职场文书
地方白酒代理协议书
2014/10/25 职场文书
2015年医德考评自我评价
2015/03/03 职场文书
运动会宣传稿100字
2015/07/23 职场文书
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript