大学IT网 - 最懂大学生的IT学习网站! QQ资料交流群:367606806
当前位置:大学IT网 > ASP.NET技巧 > 鼠标划过用户名时在鼠标右下角显示div展示用户资料

鼠标划过用户名时在鼠标右下角显示div展示用户资料

关键词:鼠标划过鼠标右下角用户资料  阅读(729) 赞(18)

[摘要]本文是对鼠标划过用户名时在鼠标右下角显示div展示用户资料的讲解,对学习ASP.NET编程技术有所帮助,与大家分享。

最近做一个网站论坛,为了方便会员之间相互了解,又不想再做一个页面展示用户资料,就想到了鼠标划过用户名时在鼠标右下角显示div展示用户资料这个效果,这里要注意的该方法不是给每个用户名的旁边都绑定一个div,当鼠标经过用户名时显示,鼠标离开时隐藏,如果这样做网页加载就太耗时将了。但以前没做过,于是便想实现这个功能。经过一天的学习和查阅,了解了个大概,最终实现了这个效果。下面列一下难点和实现方法:

一、难点

难点无非就三大块,一个是div的定位,这个是该效果的主要难点,之前在网上找了很多定位的代码,但还是在网页中不能精确定位,后来经过自己的一些改进,还算完美;二个是通过ajax异步加载数据,这个对于有一定开发经验的老手来说应该算不了什么;第三个就是要用到两个js属性onmouseover和onmouseout,即鼠标经过和鼠标离开。

二、实现步骤

1.首先设计好要显示用户资料的div的样式, 这里要注意的该方法不是给每个用户名的旁边都绑定一个div,当鼠标经过时显示,鼠标离开时隐藏,网页里就一个显示信息的div,哪里需要显示时就定位在哪里,这要就需要把该div的定位方式设置为绝对定位。

html代码:

  <div  id="blockdiv">
             <div class="pic">
                 <img src="../../Users/images/搜狗截图20140729230133.png" id="imguserhead" />
             </div>
             <div class="box">
                 <table width="220" border="0" style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap">
                     <tr>
                         <td style="width: 70px;">用户名:</td>
                         <td>
                             <label id="lblusername"></label>
                         </td>
                     </tr>
                     <tr>
                         <td>真实姓名:</td>
                         <td>
                             <label id="lblrealname"></label>
                         </td>
                     </tr>
                     <tr>
                         <td>性别:</td>
                         <td>
                             <label id="sex"></label>
                         </td>
                     </tr>
                     <tr>
                         <td>所属地区:</td>
                         <td>
                             <label id="lbladdress"></label>
                         </td>
                     </tr>
                     <tr>
                         <td>邮箱:</td>
                         <td>
                             <label id="lblemall"></label>
                         </td>
                     </tr>
                 </table>
                 <div style="text-align: left; color: green; line-height: 40px; height: 30px; display: none;" id="messagediv ">正在加载中...</div>
             </div>
 
         </div>


相应css代码

   #blockdiv{
     width:380px;
     height:160px;
     float:left;
     display:none;
     border: 1px solid #ccc;  position: absolute; z-index: 1; opacity: 0.1; background: white
     }
     .pic{
         width:100px;
         height:100px;
         border:1px solid #ccc;
         border-radius:10px; 
         float:left; margin:10px; 
         overflow:hidden;
         }
     .box{
         width:240px;
         height:140px;
         margin:10px 0 10px 10px;
         float:left;
         overflow:hidden;text-overflow:ellipsis; white-space:nowrap;}

2.定位,为了能够精确的定位并且能够方便的调用,所以先在页面中放了两个标签,分别用于保存当前鼠标的坐标

<input type="hidden" id="pagex" />
<input type="hidden" id="pagey" />

然后用js获取当前坐标并保存到标签中:

  jQuery(document).ready(function ($) {
      $(document).mousemove(function (e) {
                 document.getElementById("pagex").value = e.pageX;//pageX() 属性是鼠标指针的位置,相对于文档的左边缘。
                 document.getElementById("pagey").value = e.pageY;//pageY() 属性是鼠标指针的位置,相对于文档的上边缘。
             });        });

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.调用

  <a  onmouseover="ShowInfo('<%#Eval("Response_Person") %>')" onmouseout="HiddenInfo()">
                                             <asp:Label runat="server" ID="lbl_username" Text='<%#Eval("Response_Person") %>' /></a>

效果图:




相关评论