JavaScript多級選項卡效果程式碼例項
關於選項卡效果的更多效果可以檢視特效程式碼選項卡板塊。
本章節分享一個多級選項卡程式碼例項,並且詳細介紹一下它的實現過程。
所謂多級選項卡,就是一個選項卡下面還有選項卡效果。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> * { padding: 0; margin: 0; list-style: none; } .wrap { width: 920px; height: 320px; padding: 20px; margin: 40px 100px; background: #CCC; } .left-btn { width: 142px; height: 314px; float: left; background: #999; } .left-btn p { cursor: pointer; height: 77px; border-bottom: 1px solid #636363; border-top: 1px solid #DEDEDE; text-align: center; font: normal 18px/77px "微軟雅黑"; } .left-btn p:first-child { border-top: none; } .left-btn p.active { background: #fff; } .layout-right { float: left; width: 770px; height: 314px; background: #fff; } .layout-right li { position: relative; display: none; width: 770px; height: 314px; } .layout-right li.active { display: block; } .layout-right li .ad-title { position: absolute; left: 0; right: 0; bottom: 0; height: 26px; background: rgba(0, 0, 0, 0.33); color: #fff; } .layout-right li .ad-title span { box-sizing: border-box; cursor: pointer; text-align: center; font: normal 12px/26px "microsoft yahei"; width: 25%; float: left; border-right: 1px solid #fff; } .layout-right li .ad-title span.curr { background: #FC005C; } .layout-right li .ad-img .img { display: none; } .layout-right li .ad-img .img.curr { display: block; } </style> <script type="text/javascript"> window.onload = function () { function byId(obj) { return document.getElementById(obj) }; var oBtnWrap = byId('btn-wrap'); var oConWrap = byId('con-wrap'); var btnA1 = oBtnWrap.getElementsByTagName('p'); var oLi = oConWrap.getElementsByTagName('li'); var obBtnAtrr = []; for (var index = 0; index < btnA1.length; ++index) { btnA1[index].index = index; btnA1[index].onclick = function () { var zIndex = this.index; for (var index = 0; index < btnA1.length; ++index) { btnA1[index].className = ""; }; this.className = "active"; for (var j = 0; j < oLi.length; ++j) { oLi[j].style.display = "none"; } oLi[zIndex].style.display = "block"; }; }; banner1('a'); banner1('b'); banner1('c'); banner1('d'); function banner1(obj) { var sobj = byId(obj); var ospan = sobj.getElementsByTagName("span"); var oimg = sobj.getElementsByTagName("p"); for (var index = 0; index < ospan.length; ++index) { ospan[index].index = index; ospan[index].onmouseover = function () { var zindex = this.index; for (var index = 0; index < ospan.length; ++index) { ospan[index].className = ""; }; this.className = "curr"; for (var j = 0; j < oimg.length; ++j) { oimg[j].style.display = "none"; }; oimg[zindex].style.display = "block"; }; } }; }; </script> </head> <body> <div class="wrap"> <div class="left-btn" id="btn-wrap"> <p class="active">最新商品</p> <p>最低優惠</p> <p>名品推薦</p> <p>繽紛活動</p> </div> <div class="layout-right" id="con-wrap"> <ul> <li class="active" id="a"> <div class="ad-img"> <p class="img curr"><img src="demo/js/img/tab1.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab2.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab3.png" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab1.jpg" width="770" height="314" /></p> </div> <div class="ad-title"> <span class="curr">小米手機5</span> <span>小米手機4</span> <span>小米手機3</span> <span>小米手機2</span> </div> </li> <li id="b"> <div class="ad-img"> <p class="img curr"><img src="demo/js/img/tab4.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab2.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab3.png" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab1.jpg" width="770" height="314" /></p> </div> <div class="ad-title"> <span class="curr">iPhone5</span> <span>iPhone4</span> <span>iPhone3</span> <span>iPhone2</span> </div> </li> <li id="c"> <div class="ad-img"> <p class="img curr"><img src="demo/js/img/tab3.png" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab2.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab1.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab1.jpg" width="770" height="314" /></p> </div> <div class="ad-title"> <span class="curr">錘子手機T1</span> <span>錘子手機T2</span> <span>錘子手機T3</span> <span>錘子手機T4</span> </div> </li> <li id="d"> <div class="ad-img"> <p class="img curr"><img src="demo/js/img/tab1.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab1.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab2.jpg" width="770" height="314" /></p> <p class="img"><img src="demo/js/img/tab3.png" width="770" height="314" /></p> </div> <div class="ad-title"> <span class="curr">華為手機1</span> <span>華為手機2</span> <span>華為手機3</span> <span>華為手機4</span> </div> </li> </ul> </div> </div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function () {},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).function byId(obj) {
return document.getElementById(obj)
},此函式可以實現獲取具有指定id屬性值的元素物件。
(3).var oBtnWrap = byId('btn-wrap'),獲取id屬性值為btn-wrap元素物件。
(4).var oConWrap = byId('con-wrap'),獲取id屬性值為con-wrap元素物件。
(5). var btnA1 = oBtnWrap.getElementsByTagName('p'),獲取對應元素下的p元素集合。
(6).var oLi = oConWrap.getElementsByTagName('li'),獲取對應元素下所有的li元素。
(7).var obBtnAtrr = [],建立一個空陣列,後面會用到。
(8).for (var index = 0; index < btnA1.length; ++index) {},使用for迴圈遍歷每一個p元素。
(9).btnA1[index].index = index,為當前p元素建立一個index屬性,並賦值為當前的index索引值。
(10).btnA1[index].onclick = function () {},為當前的p元素註冊onclick事件處理函式。
(11).var zIndex = this.index,獲取當前p元素物件的索引值。
(12).for (var index = 0; index < btnA1.length; ++index) {
btnA1[index].className = "";
},通過for迴圈將所有的p元素class屬性值清空。
(13).this.className = "active",將當前p元素的class屬性值設定為active。
(14).for (var j = 0; j < oLi.length; ++j) {
oLi[j].style.display = "none";
},將所有的li元素設定為隱藏。
(15).oLi[zIndex].style.display = "block",將對應索引的li元素顯示出來,也就是下一級選項卡。
(16).banner1('a'),進行函式呼叫,關於banner1函式的用法下面會介紹。
(17).function banner1(obj),此函式實現了子選項卡的一些初始化工作,比如事件處理函式的註冊等,引數是id屬性值。
(18).var sobj = byId(obj),獲取對應的元素物件。
(19).var ospan = sobj.getElementsByTagName("span"),獲取元素物件下的所有span元素集合。
(20).var oimg = sobj.getElementsByTagName("p"),獲取對應的p元素集合。
(21).for (var index = 0; index < ospan.length; ++index) {},使用for迴圈遍歷每一個span元素。
(22).ospan[index].index = index,為當前span元素新增一個index屬性,並賦值為當前span元素在集合中的索引。
(23).ospan[index].onmouseover = function () {
var zindex = this.index;
for (var index = 0; index < ospan.length; ++index) {
ospan[index].className = "";
};
this.className = "curr";
for (var j = 0; j < oimg.length; ++j) {
oimg[j].style.display = "none";
};
oimg[zindex].style.display = "block";
};
註冊onmouseover事件處理函式,當滑鼠懸浮就可以顯示對應的圖片。
原理其實上面再第一級選項卡切換的時候都已經涉及到了。
二.相關閱讀:
(1).getElementsByTagName()可以參閱document.getElementsByTagName()一章節。
(2).className可以參閱js className一章節。
(3).onmouseover事件可以參閱javascript mouseover事件一章節。
相關文章
- jQuery tab選項卡效果程式碼例項jQuery
- JavaScript tab選項卡效果JavaScript
- 純css tab選項卡程式碼例項CSS
- JavaScript實現選項卡效果JavaScript
- jquery.idTabs.min.js選項卡程式碼例項jQueryJS
- jQuery點選滑出層效果程式碼例項jQuery
- javascript tab選項卡JavaScript
- canvas載入效果程式碼例項Canvas
- CSS橢圓效果程式碼例項CSS
- JavaScript in運算子程式碼例項JavaScript
- JavaScript 點選複製選中文字程式碼例項JavaScript
- JavaScript點選設定背景顏色的選項卡程式碼JavaScript
- JavaScript 側欄選項卡JavaScript
- JavaScript tab選項卡功能JavaScript
- 美化滾動條效果程式碼例項
- canvas原型鐘錶效果程式碼例項Canvas原型
- css3水滴效果程式碼例項CSSS3
- css背景虛化效果程式碼例項CSS
- canvas氣泡上浮效果程式碼例項Canvas
- JavaScript運動框架程式碼例項JavaScript框架
- JavaScript取餘數程式碼例項JavaScript
- JavaScript 阻止事件冒泡程式碼例項JavaScript事件
- 小程式 — 選項卡
- css3晃動效果程式碼例項CSSS3
- CSS3心形效果程式碼例項CSSS3
- div前後翻轉效果程式碼例項
- 當前文字框高亮效果程式碼例項
- CSS3旋轉效果程式碼例項CSSS3
- 淡入淡出效果簡單程式碼例項
- canvas繪製箭頭效果程式碼例項Canvas
- JavaScript陣列合並程式碼例項JavaScript陣列
- JavaScript倒數計時程式碼例項JavaScript
- JavaScript 表單驗證程式碼例項JavaScript
- jQuery tab選項卡程式碼詳解jQuery
- 使用原生js實現選項卡功能例項教程JS
- CSS3滑過光束效果程式碼例項CSSS3
- CSS3小黃人效果程式碼例項CSSS3
- css3折角效果程式碼例項CSSS3
- CSS3梯形效果程式碼例項CSSS3