首页 > 代码库 > 鼠标划过用户名时在鼠标右下角显示div展示用户资料
鼠标划过用户名时在鼠标右下角显示div展示用户资料
最近做一个网站论坛,为了方便会员之间相互了解,又不想再做一个页面展示用户资料,就想到了鼠标划过用户名时在鼠标右下角显示div展示用户资料这个效果, 这里要注意的该方法不是给每个用户名的旁边都绑定一个div,当鼠标经过用户名时显示,鼠标离开时隐藏,如果这样做网页加载就太耗时将了。但以前没做过,于是便想实现这个功能。经过一天的学习和查阅,了解了个大概,最终实现了这个效果。下面列一下难点和实现方法:
一、难点
难点无非就三大块,一个是div的定位,这个是该效果的主要难点,之前在网上找了很多定位的代码,但还是在网页中不能精确定位,后来经过自己的一些改进,还算完美;二个是通过ajax异步加载数据,这个对于有一定开发经验的老手来说应该算不了什么;第三个就是要用到两个js属性onmouseover和onmouseout,即鼠标经过和鼠标离开。
二、实现步骤
1.首先设计好要显示用户资料的div的样式, 这里要注意的该方法不是给每个用户名的旁边都绑定一个div,当鼠标经过时显示,鼠标离开时隐藏,网页里就一个显示信息的div,哪里需要显示时就定位在哪里,这要就需要把该div的定位方式设置为绝对定位。
html代码:
1 <div class="blockdiv" id="blockdiv"> 2 <div class="pic"> 3 <img src="../../Users/images/搜狗截图20140729230133.png" id="imguserhead" /> 4 </div> 5 <div class="box"> 6 <table width="220" border="0" style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap"> 7 <tr> 8 <td style="width: 70px;">用户名:</td> 9 <td>10 <label id="lblusername"></label>11 </td>12 </tr>13 <tr>14 <td>真实姓名:</td>15 <td>16 <label id="lblrealname"></label>17 </td>18 </tr>19 <tr>20 <td>性别:</td>21 <td>22 <label id="sex"></label>23 </td>24 </tr>25 <tr>26 <td>所属地区:</td>27 <td>28 <label id="lbladdress"></label>29 </td>30 </tr>31 <tr>32 <td>邮箱:</td>33 <td>34 <label id="lblemall"></label>35 </td>36 </tr>37 </table>38 <div style="text-align: left; color: green; line-height: 40px; height: 30px; display: none;" id="messagediv ">正在加载中...</div>39 </div>40 41 </div>
相应css代码
1 #blockdiv{ 2 width:380px; 3 height:160px; 4 float:left; 5 display:none; 6 border: 1px solid #ccc; position: absolute; z-index: 1; opacity: 0.1; background: white 7 } 8 .pic{ 9 width:100px;10 height:100px;11 border:1px solid #ccc;12 border-radius:10px; 13 float:left; margin:10px; 14 overflow:hidden;15 }16 .box{17 width:240px;18 height:140px;19 margin:10px 0 10px 10px;20 float:left;21 overflow:hidden;text-overflow:ellipsis; white-space:nowrap;}
2.定位,为了能够精确的定位并且能够方便的调用,所以先在页面中放了两个标签,分别用于保存当前鼠标的坐标
<input type="hidden" id="pagex" />
<input type="hidden" id="pagey" />
然后用js获取当前坐标并保存到标签中:
1 jQuery(document).ready(function ($) {2 $(document).mousemove(function (e) {3 document.getElementById("pagex").value = http://www.mamicode.com/e.pageX;//pageX() 属性是鼠标指针的位置,相对于文档的左边缘。4 document.getElementById("pagey").value = http://www.mamicode.com/e.pageY;//pageY() 属性是鼠标指针的位置,相对于文档的上边缘。5 }); });
3.鼠标经过和离开事件js代码
function ShowInfo(username) { $("#blockdiv").css({ "display": "block", "left": document.getElementById(‘pagex‘).value, "top": document.getElementById(‘pagey‘).value, }); $("#messagediv").css("display", "block"); $.getJSON("../ashx/GetUserInfo.ashx?name=" + username, function (data) { if (data != null) { $("#lblusername").html(data[0].User_Count) $("#lblrealname").html(data[0].User_name); $("#sex").html(data[0].User_Sex); $("#lbladdress").html(data[0].User_Address) $("#lblemall").html(data[0].User_Email); if (data[0].User_HeadImg != null&&data[0].User_HeadImg != "") { $("#imguserhead").attr("src", "../../Users/" + data[0].User_HeadImg.toString().substring(3)); } else { $("#imguserhead").attr("src", "../../Users/images/搜狗截图20140729230133.png"); } $("#messagediv").css("display", "none"); } else $("#messagediv").html("未加载到数据!"); }); } function HiddenInfo() { $("#blockdiv").css({ "display": "none", }); $("#lblusername").html("") $("#lblrealname").html(""); $("#sex").html(""); $("#lbladdress").html("") $("#lblemall").html(""); }
4.调用
1 <a class="showuserinfo" onm ouseover="ShowInfo(‘<%#Eval("Response_Person") %>‘)" onm ouseout="HiddenInfo()">2 <asp:Label runat="server" ID="lbl_username" Text=‘<%#Eval("Response_Person") %>‘ /></a>
鼠标划过用户名时在鼠标右下角显示div展示用户资料