最近做一個網站論壇,為了方便會員之間相互了解,又不想再做一個頁面展示用戶資料,就想到了鼠標劃過用戶名時在鼠標右下角顯示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>View Code
相應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;}View Code
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 = e.pageX;//pageX() 屬性是鼠標指針的位置,相對于文檔的左邊緣。4 document.getElementById("pagey").value = e.pageY;//pageY() 屬性是鼠標指針的位置,相對于文檔的上邊緣。5 }); });View Code
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(""); }View Code
4.調用
1 <a class="showuserinfo" onmouseover="ShowInfo('<%#Eval("Response_Person") %>')" onmouseout="HiddenInfo()">2 <asp:Label runat="server" ID="lbl_username" Text='<%#Eval("Response_Person") %>' /></a>
效果圖:
新聞熱點
疑難解答