JS控制彈出懸浮窗口(一覽畫面)的實例代碼
在web項目開發(fā)中經(jīng)常遇到在一覽畫面中用戶需要查看某一條記錄的詳細信息。如果用遷移畫面的方式處理,速度會比較慢,而且用戶體驗不是太好。如果采用點擊該條記錄的詳細鏈接時彈出一個層顯示在當前畫面的話,處理速度很快,而且用戶感覺也比較新穎。下面我以某個對日電子商務網(wǎng)站為實例說明下它的實現(xiàn)方式。
1、jsp頁面上彈出層的代碼
<!-- 物流詳情彈出頁面 start --> <s:iterator value="lrVo" var="lrVo" id="lrVo" status="st"> <div class="logisticscenter_xq" style="display: none;" id='<s:property value="#lrVo.logisticNO"/>'> <dl> <dt><strong><s:text name="struts.webui.logistics.label.logisticsDetails"/>:</strong></dt> <dd><strong class="close_wind">X</strong></dd> </dl> <div class="information logistics_win"> <table width="" border="0" cellspacing="0" cellpadding="0"> <tr> <td class="r_text"><span class="icon9">*</span><s:text name="struts.webui.logistics.label.logisticsNumber"/>:</td> <td></td> <td colspan="3" id="logisticNo"><s:property value="#lrVo.logisticNO"/></td> </tr> <tr> <td valign="top" class="r_text"><span class="icon9">*</span><s:text name="struts.webui.logistics.label.distribution"/>:</td> <td></td> <td colspan="3" style="text-align:left" id="content"><s:property value="#lrVo.content" escape="false"/></td> </tr> </table> </div> </div> </s:iterator> <!--物流詳情彈出窗口 end-->
層樣式代碼:
.logisticscenter_xq{ position: absolute; width:710px; border:solid 2px #787878; background: #edfcfe; z-index: 2; }
我的處理時將彈出層放置到整個網(wǎng)站頁面的layout.jsp,網(wǎng)站中所有頁面的布局都繼承它。該網(wǎng)站采用tiles框架統(tǒng)一對頁面布局。
2、計算對象居中要設置的left值和top值
我把這一步要完成的功能寫成一個js文件,主要是根據(jù)用戶在一覽頁面上鼠標點擊的坐標位置,動態(tài)地顯示該條記錄的層窗口。主要代碼如下:
// 計算對象居中需要設置的left和top值 // 參數(shù): // _w - 對象的寬度 // _h - 對象的高度 function getLT(_w,_h) { var de = document.documentElement; // 獲取當前瀏覽器窗口的寬度和高度 // 兼容寫法,可兼容ie,ff var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth; var h = (de&&de.clientHeight) || document.body.clientHeight; // 獲取當前滾動條的位置 // 兼容寫法,可兼容ie,ff var st= (de&&de.scrollTop) || document.body.scrollTop; var topp=0; if(h>_h) topp=(st+(h - _h)/2); else topp=st; var leftp = 0; if(w>_w) leftp = ((w - _w)/2); // 左側距,頂部距 return [leftp,topp]; } //獲取鼠標位置GetPostion function GetPostion(e) { var x = getX(e); var y = getY(e); } function getX(e) { e = e || window.event; return e.pageX || e.clientX + document.body.scrollLeft - document.body.clientLeft } function getY(e) { e = e|| window.event; return e.pageY || e.clientY + document.body.scrollTop - document.body.clientTop } //判斷瀏覽器類型 function getOs() { var OsObject = ""; if(navigator.userAgent.indexOf("MSIE")>0) { return "MSIE"; } if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){ return "Firefox"; } if(isSafari=navigator.userAgent.indexOf("Safari")>0) { return "Safari"; } if(isCamino=navigator.userAgent.indexOf("Camino")>0){ return "Camino"; } if(isMozilla=navigator.userAgent.indexOf("Gecko/")>0){ return "Gecko"; } }
將該js包含到主調(diào)用的一覽jsp文件中。
<script language="javascript" type="text/javascript" src="<s:url value="/js/aligncenter.js"/>"></script>
3、一覽jsp中的調(diào)用方法
<a class="view_button" onclick="viewLogistics(event,'<s:property value="#lrVo.logisticNO"/>')" href="####"><s:text name="struts.webui.logistics.label.view"/></a>
用戶點擊該行記錄的詳情鏈接時調(diào)用顯示層的方法,同時將該記錄的id值傳給調(diào)用方法。其實,每一個層就是用這條記錄的一個id屬性值進行區(qū)分的。
function viewLogistics(event,logisticNO){ var os = getOs(); var y = getY(event); if(os=='MSIE'){ y=window.event.y+405; } $(".logisticscenter_xq").hide(); $("#"+logisticNO).show(); $("#"+logisticNO).css("top",y+15); }
至于方法中event參數(shù)的作用,還不是太清楚,這點需要再調(diào)查一下。最終效果如下圖,隨著鼠標下移,層能夠動態(tài)的移動。
以上所述是小編給大家介紹的JS控制彈出懸浮窗口(一覽畫面)的實例代碼,希望對大家有所幫助,如果大家想了解更多資訊請關注腳本之家網(wǎng)站!
相關文章
JavaScript數(shù)據(jù)結構之二叉樹的刪除算法示例
這篇文章主要介紹了JavaScript數(shù)據(jù)結構之二叉樹的刪除算法,簡單分析了javascript刪除數(shù)據(jù)結構中二叉樹節(jié)點時所遇到的各種情況與相關的處理原理與算法實現(xiàn)技巧,需要的朋友可以參考下2017-04-04javascript使用alert實現(xiàn)一個精美的彈窗
其實最初使用alert還是一個常態(tài),包括現(xiàn)在很多B端平臺還在直接使用alert,本文主要介紹了javascript使用alert實現(xiàn)一個精美的彈窗,感興趣的可以了解一下2023-02-02JavaScript中創(chuàng)建對象和繼承示例解讀
這篇文章主要介紹了JavaScript中怎樣創(chuàng)建對象和繼承,需要的朋友可以參考下2014-02-02Popup彈出框添加數(shù)據(jù)實現(xiàn)方法
這篇文章主要為大家詳細介紹了Popup彈出框添加數(shù)據(jù)的簡單實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10