JavaScript實(shí)現(xiàn)tab欄切換的效果
tab欄:點(diǎn)擊不同的標(biāo)簽,顯示不同的內(nèi)容,被點(diǎn)擊的標(biāo)簽樣式發(fā)生改變(突出選中的是哪一個(gè))
實(shí)現(xiàn)思路:
1、將tab欄分為上下兩部分,上面是導(dǎo)航列表,下面是各部分對(duì)應(yīng)的內(nèi)容。把標(biāo)簽和內(nèi)容都寫(xiě)出來(lái),內(nèi)容按照標(biāo)簽順序依次順著寫(xiě),給標(biāo)簽都添加自定義屬性- - -index,屬性值從0開(kāi)始,依次增加1
2、首先實(shí)現(xiàn)上面的效果,點(diǎn)擊后樣式切換,被點(diǎn)擊的字體顏色、背景顏色改變等:
①css定義一個(gè)類(lèi)eg:current,里面定義改變后的樣式,先給第一個(gè)標(biāo)簽寫(xiě)一個(gè)該類(lèi)名,其他的不寫(xiě)類(lèi)名,
②js獲取所有標(biāo)簽元素對(duì)象,- - -for循環(huán)- - -遍歷給每個(gè)標(biāo)簽綁定- - -onclick點(diǎn)擊事件
③點(diǎn)擊事件里面使用排他算法- - -for循環(huán)- - -將所有標(biāo)簽設(shè)置類(lèi)名為空- - -className = ‘' ,然后當(dāng)前被點(diǎn)擊的標(biāo)簽設(shè)置上面定義的特殊類(lèi)名- - -this.className = ‘current';
3、實(shí)現(xiàn)下面,根據(jù)點(diǎn)擊的標(biāo)簽,出現(xiàn)不同的內(nèi)容:
①css將第一個(gè)標(biāo)簽對(duì)應(yīng)內(nèi)容顯示,其他的都隱藏起來(lái):
.box-tb .item:nth-child(n+2) {
display: none;
}
②獲取內(nèi)容的全部元素對(duì)象,獲取標(biāo)簽的index值,在點(diǎn)擊事件里再添加一個(gè)排他思想代碼- - -for循環(huán)- - -遍歷內(nèi)容的元素對(duì)象,將所有內(nèi)容設(shè)置隱藏- - -items[i].style.display = ‘none';然后根據(jù)被點(diǎn)擊的標(biāo)簽,將對(duì)應(yīng)的內(nèi)容顯示- - -items[index].style.display = ‘block';
代碼示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>tab欄切換</title>
<style>
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
.box {
width: 600px;
margin: 100px auto;
}
.box-th {
overflow: hidden;
width: 100%;
background-color: #88ace6;
}
.box-th ul li {
float: left;
width: 90px;
height: 20px;
margin-right: 10px;
padding: 5px;
text-align: center;
}
.current {
color: #fff;
background-color: green;
}
.box-tb {
margin-top: 20px;
}
.box-tb .item:nth-child(n+2) {
display: none;
}
</style>
</head>
<body>
<div class="box">
<div class="box-th">
<ul>
<li data-index="0" class="current">春</li>
<li data-index="1">夏</li>
<li data-index="2">秋</li>
<li data-index="3">冬</li>
</ul>
</div>
<div class="box-tb">
<div class="item">春季排四季之首,新的輪回從此開(kāi)啟。春,代表著溫暖、生長(zhǎng),植物發(fā)芽,風(fēng)和日暖,鳥(niǎo)語(yǔ)花香。這季節(jié)的氣溫、日照、降雨,處于一年中的轉(zhuǎn)折點(diǎn),趨于上升或增多。春季,陰陽(yáng)之氣開(kāi)始轉(zhuǎn)變,萬(wàn)物隨陽(yáng)氣上升而萌牙生長(zhǎng),春季是萬(wàn)物生長(zhǎng)、春耕播種的季節(jié),所謂“一年之計(jì)在于春”。 春季起始—結(jié)束: 依據(jù)天象變化劃分:傳統(tǒng)上是以“立春”(斗指寅,太陽(yáng)達(dá)黃經(jīng)315°時(shí))作為春季的起點(diǎn),至“立夏”結(jié)束。 依據(jù)氣溫變化劃分:近代采用學(xué)者張寶堃的“候平均氣溫”劃分,以候平均溫度(連續(xù)5天氣溫的平均)從10℃以下穩(wěn)定升到10℃以上時(shí)作為春季開(kāi)始,至候平均溫度22℃以上(入夏)時(shí)結(jié)束。
</div>
<div class="item">夏季萬(wàn)物至此皆盛,是農(nóng)作物進(jìn)入旺季生長(zhǎng)的一個(gè)季節(jié)。溫度升高,天氣炎熱,狂風(fēng)暴雨頻發(fā),萬(wàn)物盛長(zhǎng)。夏季是風(fēng)暴最多的季節(jié),常伴隨著大風(fēng)、暴雨。北半球夏季,大陸受熱氣壓上升形成低氣壓,海洋恒溫溫度相對(duì)較低形成高氣壓,根據(jù)環(huán)流,夏季吹的是東南風(fēng)。夏季北半球各地的白晝時(shí)間全年最長(zhǎng)。 夏季起始—結(jié)束: 依據(jù)天象變化劃分:以“立夏”(斗指東南,太陽(yáng)達(dá)黃經(jīng)45°)作為夏季的起點(diǎn),至“立秋”結(jié)束。 依據(jù)氣溫變化劃分:以候平均溫度穩(wěn)定升到22℃以上時(shí)作為夏季開(kāi)始,至候平均溫度22℃以下時(shí)結(jié)束。
</div>
<div class="item">秋季是收獲季節(jié),意味著萬(wàn)物開(kāi)始從繁茂成長(zhǎng)趨向蕭索成熟。秋季的前兩個(gè)節(jié)氣立秋、處暑,還是酷熱天氣,因太陽(yáng)所帶來(lái)的熱力未減弱,所謂“熱在三伏”,三伏天出現(xiàn)在小暑與處暑之間,是一年中氣溫最高且又潮濕、悶熱的日子。造成三伏天濕度高原因是,三伏天吹東南風(fēng),而東南方是太平洋和印度洋,空氣潮濕,風(fēng)的潮濕造成了三伏天濕度大;到了深秋之后則相反,吹西北風(fēng),而西北方是干燥的內(nèi)陸,干燥的西北風(fēng)造成深秋之后氣候干燥。秋季前兩個(gè)節(jié)氣的氣候特征為潮濕、悶熱,秋季真正涼爽一般要到白露節(jié)氣之后,自白露起漸漸趨向涼爽、干燥。隨著進(jìn)入深秋,氣候由熱轉(zhuǎn)涼,萬(wàn)物隨寒氣增長(zhǎng),逐漸蕭落,這是熱與冷交替的季節(jié)。秋季最明顯的變化草木的葉子從繁茂的綠色到發(fā)黃,并開(kāi)始落葉莊稼則開(kāi)始成熟。
[1] 秋季起始—結(jié)束: 依據(jù)天象變化劃分:以“立秋”(斗指西南,太陽(yáng)達(dá)黃經(jīng)135°)作為秋季的起點(diǎn),至“立冬”結(jié)束。 依據(jù)氣溫變化劃分:以候平均溫度從22℃以上穩(wěn)定降到22℃以下作為秋季開(kāi)始,至候平均溫度降到10℃以下時(shí)結(jié)束。
</div>
<div class="item">冬季,陰陽(yáng)轉(zhuǎn)變,萬(wàn)物由收到藏,植物生氣閉蓄。進(jìn)入立冬后意味著秋季少雨干燥氣候漸過(guò)去,轉(zhuǎn)為陰雨寒凍的冬季氣候特征。北半球的太陽(yáng)高度小,白晝時(shí)間短。所謂“熱在三伏”,冷在三九”,冬至為"一九天",冬至之前還不算很冷,冬至過(guò)后強(qiáng)冷空氣南下頻繁,并越過(guò)了南嶺,氣溫驟降,天氣寒冷。冬季真正寒冷,是在冬至后。 冬季起始—結(jié)束: 依據(jù)天象變化劃分:以“立冬”(斗指西北,太陽(yáng)達(dá)黃經(jīng)225°)作為冬季的起點(diǎn),至下一“立春”結(jié)束。 依據(jù)氣溫變化劃分:以候平均溫度穩(wěn)定降到10℃以下為冬季的開(kāi)始,至候平均溫度10℃以上時(shí)結(jié)束。
</div>
</div>
</div>
<script>
var list = document.querySelector('.box-th').querySelectorAll('li');
var items = document.querySelector('.box-tb').querySelectorAll('.item');
for (var i = 0; i < list.length; i++) {
list[i].onclick = function() {
// 導(dǎo)航欄樣式切換,排他算法
for (var i = 0; i < list.length; i++) {
list[i].className = '';
}
this.className = 'current';
// 下面展示內(nèi)容切換,排他算法
var index = this.getAttribute('data-index');
for (var i = 0; i < items.length; i++) {
items[i].style.display = 'none';
}
items[index].style.display = 'block';
}
}
</script>
</body>
</html>
頁(yè)面效果:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用Node.js創(chuàng)建一個(gè)密碼生成器的全步驟
這篇文章主要給大家介紹了關(guān)于如何利用Node.js創(chuàng)建一個(gè)密碼生成器的相關(guān)資料,文章將實(shí)現(xiàn)的步驟一步步介紹的非常詳細(xì),對(duì)大家具有也一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-07-07
js判斷一個(gè)對(duì)象是否在一個(gè)對(duì)象數(shù)組中(場(chǎng)景分析)
這篇文章主要介紹了js判斷一個(gè)對(duì)象是否在一個(gè)對(duì)象數(shù)組中,本文通過(guò)場(chǎng)景分析給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2022-08-08
JS實(shí)現(xiàn)二叉查找樹(shù)的建立以及一些遍歷方法實(shí)現(xiàn)
本篇文章主要介紹了JS實(shí)現(xiàn)二叉查找樹(shù)的建立以及一些遍歷方法實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-04-04
Javascript執(zhí)行流程細(xì)節(jié)原理解析
這篇文章主要介紹了Javascript執(zhí)行流程細(xì)節(jié)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
jquery實(shí)現(xiàn)下拉菜單的二級(jí)聯(lián)動(dòng)利用json對(duì)象從DB取值顯示聯(lián)動(dòng)
這篇文章主要介紹了jquery實(shí)現(xiàn)下拉菜單的二級(jí)聯(lián)動(dòng)利用json對(duì)象從DB取值顯示聯(lián)動(dòng),需要的朋友可以參考下2014-03-03
layui將table轉(zhuǎn)化表單顯示的方法(即table.render轉(zhuǎn)為表單展示)
今天小編就為大家分享一篇layui將table轉(zhuǎn)化表單顯示的方法(即table.render轉(zhuǎn)為表單展示),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09
用html+css+js實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的圖片切換特效
這篇文章主要介紹了用html+css+js實(shí)現(xiàn)的一個(gè)簡(jiǎn)單的圖片切換特效,需要的朋友可以參考下2014-05-05
用JS實(shí)現(xiàn)簡(jiǎn)單的登錄驗(yàn)證功能
這篇文章主要介紹了用JS實(shí)現(xiàn)簡(jiǎn)單的登錄驗(yàn)證功能,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-07-07

