您好,登錄后才能下訂單哦!
一、網站導航欄
我們所熟知的網站導航欄,無非就是網站標題以橫、縱向方式排列,用戶點擊以后進入相應的頁面來展示網站內容,達到傳達信息的目的。
用戶點擊進入一個頁面,如果在刷新后此導航欄有文字有相應的顏色、背景變化,那么將會有一個很好的用戶體驗,此時就涉及到CSS的hover樣式、jQuery的觸發事件了。
二、hover樣式
鼠標掃過文字時,文字的背景、顏色變化,這樣做很簡單:
a:hover{},一句話就可以搞定;但如果要點擊刷新后仍然存在鼠標刷新的樣式,就有點上層次了。
具體問題具體分析:
1、根據使用的不同框架來定
2、CMS自己封裝了相應的方法
3、導航欄單獨做成頭部文件,利用ajax無刷新技術得以實現頭部無刷新,只變化內容區域就更簡單點
4、導航欄每個按鈕都有固定的、以ID結尾的鏈接(以DEDE為例)
/plus/list.php?tid=1、
/plus/list.php?tid=2、
/plus/list.php?tid=3、
/plus/list.php?tid=4
三、簡單實現步驟
下面就講第四種情況的實現方法(其它3種因為本人能力有限,待以后繼續更新):
HTML :很簡單的導航條代碼
<ul> <li><a href="/plus/list.php?tid=1"></a></li> <li><a href="/plus/list.php?tid=2"></a></li> <li><a href="/plus/list.php?tid=3"></a></li> <li><a href="/plus/list.php?tid=4"></a></li> <li><a href="/plus/list.php?tid=5"></a></li> </ul>
jQuery: hover方法、each方法判斷是當前頁面第一個a標簽對象的href屬性
$(function(){ $("ul>li").hover(function(){ $(this).children("a").addClass(""); },function(){ $(this).children("a").removeClass(""); $("ul>li>a").each(function(){ $this = $(this); if ($this[0].href == String(window.location)){ $this.addClass(""); } }); }); $("ul>li>a").each(function(){ $this = $(this); if ($this[0].href == String(window.location)){ $this.addClass(""); } }); });
因為有多個a標簽,所以要遍歷當前頁面所在第一個a標簽對象,獲取它的href屬性,來與所在頁面鏈接做對比,如果符合就添加對應的hover css樣式;但問題來了,樣式已經添加,鼠標經過此文字離開時又移除了該屬性,我們再次將下面這條語句復制進hover移除后的句子后面,再次強制添加該屬性,就成功解決了!
四、遺留問題、改進方向
1、 /plus/list.php?tid=1,該導航按鈕此時有了我們需要的樣式,但如果點擊此導航頁面下面的子鏈接,頁面變成了子鏈接所在的頁面,但還屬于此導航欄目的子欄目,此時的導航按鈕就失去了樣式。
2、利用jQuery實現瀏覽器兼容性更加好,css3等新技術可以對自己的個人網站做實驗。
3、能讓子欄目智能識別父欄目才是解決問題的最好辦法。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。