06_頁籤切換頁面
運用javascript,達成點選頁籤,來切換不同頁面的功能。並運用類別判斷是否有開啟js的功能,以便使用不需js的方式來顯示資料。
- 確認js可以運行
- document新增類別js,來區分不同功能的css
- 新增js變數-ul、tabHeading,用js來代表html物件
- 不顯示tabs之內的<h4>
- 只顯示第一個<ul>,其餘不顯示
- 完成點選頁籤標題,來切換頁面的功能
確認js可以運行
目前頁籤標題的部份,還需要運用javascript,才能達成點按頁籤標題切換頁籤頁面的效果
為了完成頁籤點按的功能,需運用jquery,因此在置入jquery.min.js後,在置入自訂的script.js
為了確認scripts.js可運作,先寫alert('hi')來確保js可正確運行
document新增類別js,來區分不同功能的css
為了確保沒有開啟js的瀏灠器也可正常顯示頁籤功能(tab),需設置有開啟js的和沒開啟js的二種tab顯示方式。因此能運行js的瀏灠器會套用類別名稱className = '.js',用來區分二種樣式的不同。
新增js變數-ul、tabHeading,用js來代表html物件
開始寫js的部份,程式初始化時(Site.init()),先取得代表頁籤頁面(tabs)的變數
先返回html的部份,觀察頁籤頁面(tabs),所包含的物件有哪些,你會看到它是由3個<ul>所組成(comments、categories、archieves)。程式碼太多的話,可點選最左側的欄位,將程式碼暫時收合,方便觀察
可看到程式碼收合後,更能看清楚其架構
返回js的編輯畫面, 新增變數ul來代表所有tabs之內的<ul>
新增變數tabHeadings,代表頁籤標題
不顯示tabs之內的<h4>
js可以運作的版本,必需把頁籤頁面中不需要的標題<h4>給隱藏住,我們不需要讓使用者看到多餘的標題。
運行結果, 可看到目前的頁籤頁面中,有多餘的標題,那要如何把它們隱藏呢?
返回js的編輯畫面, 可以考慮用jquery的remove()的方法,先找到tabs內所有的<h4>再將其移除
但直接修改css會更簡單,將.tabs內的<h4>設定為不要顯示。
完成了移除不必要標題的功能
只顯示第一個<ul>,其餘不顯示
接下來,要製做的功能為:隱藏所有的頁籤頁面(除了第一個以外)
uls.not(':first').hide();//除了第一個<ul>之外,其餘都隱藏。
此外,故意寫錯,把ul寫成uls,觀察firebug如何顯示錯誤。
運行結果, 可看到console的除錯資訊,讓你知道變數寫錯了。
將變數全部修正為uls
運行結果, 完成了只顯示第一個頁籤頁面,而其餘都隱藏的功能。不過,這是jquery的寫法,我們可以單單用css就可完成此功能了,接下來, 來用css的寫法來完成此功能。
先將所有.tab內的<ul>都設為不要顯示,在加入只有第一個<ul>需顯示的功能
但是這樣要寫二行,太麻煩了。可將此二行的功能整理為一行就好。
完成後,替此段css留段註解。
完成了只顯示第一個頁籤頁面的功能。
完成點選頁籤標題,來切換頁面的功能
接下來, 要完成點選頁籤標題,來切換頁面的功能
委派<li>來監聽click事件,新增變數li來代表目前被點選的<li>
新增變數hash,用來代表所點選的超連結的路徑
變數設完後,下一步為:改變目前所點選的<li>的樣式,讓使用者知道目前所點選的是哪一個<li>
利用siblings()來取得同一層的所有<li>,用removeClass()先把目前的樣式給移除掉
使用end()來跳回目前點選的<li>,並用addClass()來加入樣式。完成了設定點選標題,設定標題樣式的功能。
接下來, 要取得目前所點選的超連結,以便切換到所對應的頁籤頁面
hash變數代表目前所點選的超連結路徑
接下來, 要顯示所對應的頁籤頁面
先隱藏所有的uls,用filter()來過濾出目前所點選的頁面,並只顯示目前所點選的頁面。
如果只用show()的話,就只會單純的顯示頁面。
因此,可以運用特效函數,如:fadeIn()造成淡入的效果,來使頁面更加活潑
由於點選超連結時,系統會有預設的動作。這些預設的動作會影響到我們自製的點選動作,所以使用e.preventDefault();來將預設的動作關閉。