選項卡是前端常見的基本功能,它是用多個標籤頁來區分不一樣內容,經過選擇標籤快速切換內容。學習本教程以前,讀者須要具有html和css技能,同時須要有簡單的javascript基礎。javascript
先來完成html部分。首先,須要一個元素把整個選項卡包含在內。新建一個div元素,它的id命名爲tabBox,以下所示:css
<div id="tabBox"></div>
在tabBox元素裏面,再把選項卡分爲標籤和內容兩個部分,分別命名class爲label_box和content_box,以下所示:html
<div id="tabBox" class="tab_box"> <ul class="label_box"></ul><!--標籤部分--> <div class="content_box"></div><!--內容部分--> </div>
通常狀況下,標籤元素和內容元素的數量要保持一致,在本實例中把標籤和內容都設爲三個。 分別在label_box和content_box元素中添加標籤和內容,以下所示:前端
<div id="tabBox" class="tab_box"> <ul class="label_box"><!--標籤部分--> <li>選項一</li> <li>選項二</li> <li>選項三</li> </ul> <div class="content_box"><!--內容部分--> <div class="content">內容一</div> <div class="content">內容二</div> <div class="content">內容三</div> </div> </div>
爲了讓選項卡好看一點,讀者能夠根據本身喜愛加上一些樣式,也能夠直接複製如下樣式代碼使用:java
.tab_box{ width:600px; margin:30px auto; } .label_box{ padding-left:30px; font-size:0; } .label_box li{ display:inline-block; line-height:30px; height:30px; padding:0 10px; margin:0 5px; font-size:14px; border:1px solid #2d9aff; border-bottom:none; border-top-left-radius:4px; border-top-right-radius:4px; cursor:pointer; } .label_box li.active{ background:#2d9aff; color:#fff; } .content_box{ padding:20px; border:1px solid #2d9aff; border-radius:4px; box-shadow:0px 0px 6px #aaa; } .content_box .content{ display:none; height:300px; }
完成html和css部分以後,再來使用js實現標籤切換的功能。本實例把選項卡功能封裝到函數中,因此先建立一個primaryTab函數,在primaryTab中再來編寫具體代碼。函數
筆者建議在完成某一個前端功能時,應先分析功能的具體操做。再根據具體操做把實現功能的方法分紅多個步驟,接下來一個步驟一個步驟去完成它。學習
選項卡的操做很是簡單,就是選擇標籤(能夠是點擊,也能夠是鼠標滑過,本實例使用點擊事件)時,快速切換內容且修改當前激活標籤樣式。默認狀況下第一個標籤元素爲當前激活狀態,第一個內容元素須要顯示。把這樣一個操做,在實現功能上來可分紅三個步驟:this
1 獲取標籤元素和內容元素
2 給第一個標籤元素添加active樣式修改成激活狀態;把第一個內容元素經過樣式display:bolock來顯示。
3 在標籤上添加事件,實現切換內容
3.1 遍歷標籤,給每個標籤添加事件
3.2 在事件函數中遍歷標籤,把每個標籤的className改成空字符串,用於刪除激活標籤樣式。
3.3 在事件函數中遍歷內容元素,把每個內容元素經過樣式設置爲隱藏。
3.4 在事件函數中經過this找到當前標籤元素,設置className,修改當前標籤元素樣式爲激活狀態。
3.5 在事件函數中經過變量找到對應的內容元素,並經過樣式設置爲顯示。
具體代碼以下:spa
function primaryTab(){ //1.獲取選項卡外包元素 var eTab = document.getElementById('tabBox'); //1.獲取標籤外包元素 var eLabel = eTab.getElementsByClassName('label_box')[0]; //1.獲取全部標籤元素的集合 var aLabels = eLabel.getElementsByTagName('li'); //1.獲取內容外包元素 var eContent = eTab.getElementsByClassName('content_box')[0]; //1.獲取全部內容元素的集合 var aContents = eContent.getElementsByClassName('content'); //2.給第一個標籤元素添加active樣式修改成激活狀態 aLabels[0].className = 'active'; //2.把第一個內容元素經過樣式display:bolock來顯示 aContents[0].style.display = 'block'; //3.1 遍歷標籤,注意:本實例這裏聲明變量i只能用let,若是用var會出錯 for(let i=0;i<aLabels.length;i++){ //3.1 給每個標籤添加點擊事件 aLabels[i].onclick = function(){ //3.2 遍歷標籤 for(let n=0;n<aLabels.length;n++){ //3.2 把每個標籤的className改成空字符串,用於刪除激活標籤樣式。 aLabels[n].className = ''; //3.3 由於標籤元素和內容元素數量相同,因此可經過變量n把每個內容元素經過樣式設置爲隱藏 aContents[n].style.display = 'none'; } // 3.4 經過this找到當前標籤元素,修改當前標籤元素爲激活狀態。 this.className = 'active'; //3.5 經過變量i找到對應的內容元素,並經過樣式設置爲顯示。 aContents[i].style.display = 'block'; } } } //調用選項卡函數 primaryTab();
好了,就是這麼簡單,相信經過本教程的學習,你必定很輕鬆能夠掌握JS選項卡功能。code