1、網站導航欄php
咱們所熟知的網站導航欄,無非就是網站標題以橫、縱向方式排列,用戶點擊之後進入相應的頁面來展現網站內容,達到傳達信息的目的。
css
用戶點擊進入一個頁面,若是在刷新後此導航欄有文字有相應的顏色、背景變化,那麼將會有一個很好的用戶體驗,此時就涉及到CSS的hover樣式、jQuery的觸發事件了。html
2、hover樣式css3
鼠標掃過文字時,文字的背景、顏色變化,這樣作很簡單:ajax
a:hover{},一句話就能夠搞定;但若是要點擊刷新後仍然存在鼠標刷新的樣式,就有點上層次了。瀏覽器
具體問題具體分析:框架
一、根據使用的不一樣框架來定ide
二、CMS本身封裝了相應的方法網站
三、導航欄單獨作成頭部文件,利用ajax無刷新技術得以實現頭部無刷新,只變化內容區域就更簡單點this
四、導航欄每一個按鈕都有固定的、以ID結尾的連接(以DEDE爲例)
/plus/list.php?tid=一、
/plus/list.php?tid=二、
/plus/list.php?tid=三、
/plus/list.php?tid=4
3、簡單實現步驟
下面就講第四種狀況的實現方法(其它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移除後的句子後面,再次強制添加該屬性,就成功解決了!
4、遺留問題、改進方向
一、 /plus/list.php?tid=1,該導航按鈕此時有了咱們須要的樣式,但若是點擊此導航頁面下面的子連接,頁面變成了子連接所在的頁面,但還屬於此導航欄目的子欄目,此時的導航按鈕就失去了樣式。
二、利用jQuery實現瀏覽器兼容性更加好,css3等新技術能夠對本身的我的網站作實驗。
三、能讓子欄目智能識別父欄目纔是解決問題的最好辦法。