欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript實現(xiàn)Tab欄切換特效

 更新時間:2021年06月30日 11:23:13   作者:廖若星辰LTY  
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)Tab欄切換特效,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這里分享一個前端必會的案例,是一個Tab欄的切換效果,除了Tab欄本身會被點擊切換之外,Tab本身也決定著其下方的內(nèi)容板塊的顯示。

運行效果展示:

如上圖所示,其實就是點擊上方的Tab欄然后Tab欄本身的樣式會被修改,然后其下方的內(nèi)容塊也會跟著顯示對應(yīng)的內(nèi)容。這樣的效果以及功能在前端的應(yīng)用是非常廣泛的,所以這可以說是前端必會了。話不多說下面先上代碼:

(這里就不上CSS樣式代碼了,個人根據(jù)需求進行設(shè)置即可,li用float布局就好)

HTML的結(jié)構(gòu):

<div class="tab">
        <div class="tab_list">
            <ul>
                <li class="current">商品介紹</li><!-- 默認選中第一個li,current是決定紅底白字的樣式的 -->
                <li>規(guī)格與包裝</li>
                <li>售后保障</li>
                <li>商品評價(50000)</li>
                <li>手機社區(qū)</li>
            </ul>
        </div>
        <div class="tab_con">
            <div class="item" style="display: block;"><!-- 這個item是默認顯示的,因為所有的item的display值都為none -->
                商品介紹模塊內(nèi)容
            </div>
            <div class="item">
                規(guī)格與包裝模塊內(nèi)容
            </div>
            <div class="item">
                售后保障模塊內(nèi)容
            </div>
            <div class="item">
                商品評價(50000)模塊內(nèi)容
            </div>
            <div class="item">
                手機社區(qū)模塊內(nèi)容
            </div>
 
        </div>
</div>

下面是JS代碼:

<script>
        // 業(yè)務(wù)需求:點擊tab欄被點擊的tab欄擁有不一樣的樣式,其下方的div也要跟著點擊進行切換實現(xiàn)內(nèi)容也跟著變動的效果
        var tab_list = document.querySelector('.tab_list');
        var lis = tab_list.querySelectorAll('li');
        var tabs = document.querySelectorAll('.item');
        for (var i = 0; i < lis.length; i++) {
            lis[i].setAttribute('data-index', i);    // 給每個li添加一個data-index的自定義屬性,值是它們自己在lis中的下標,這個值主要讓我們判斷我們當前點擊的是哪個li從而幫助我們后續(xù)修改它對應(yīng)的div的display值
            lis[i].onclick = function () {
                // 1.第一步,用排他思想先做出用戶點擊誰就給誰class屬性賦值,注意其他沒有被點擊的都需要操作它們的class值為空,這就是干掉其他人留下我自己的排他思想
                for (var i = 0; i <lis.length; i++) {
                    lis[i].className = '';  // 用循環(huán)先將所有人(包括自己)的class類名為空
                }
                // 再單獨給自己修改class類名即留下我自己
                this.className = 'current';  // current這個類名的CSS樣式是已經(jīng)寫好了的
                
                // 然后上面的tab欄樣式好了就要處理第二步就是點擊誰就讓其對應(yīng)的下屬div顯示出來,其他沒有被點擊的就隱藏,這里主要是需要先知道用戶點擊的是誰,然后再給對象的div設(shè)置display為block即可。還是需用用排他思想來做哦
                // 第二步:根據(jù)點擊修改div的display屬性值
                var index = this.getAttribute('index'); // 獲取當前被點擊的li的index
                for (var i = 0; i < lis.length; i++) { // 用循環(huán)讓每個item的display都為none即干掉所有人
                    tabs[i].style.display = 'none';
                }
                // 在tabs中鎖定li的index對應(yīng)的item單獨將它的display值改成block即留下我自己
                tabs[index].style.display = 'block';
            }
        }
</script>

這里再說下實現(xiàn)步驟和思路(JS代碼里已有詳細分析):首先功能大致分兩步:第一,對li標簽的樣式修改,即用戶點擊哪個li該li的樣式隨著改變?yōu)榧t底白字,而它之外的其他li則是灰底黑字的默認樣式;第二,上面的樣式修改了下面的文字模塊的內(nèi)容也要隨之改變,下面其實是放了與li一一對應(yīng)的div來裝文字內(nèi)容,只是它們的顯示是由Tab欄的li決定的,所以要實現(xiàn)div的文字隨著li變動我們就需要知道當前用戶點擊的是哪個li,這里用到的方法是 lis[i].setAttribute('index', i),即用循環(huán)給每一個li標簽添加一個自定義屬性index值等于lis(所有的li組成的數(shù)組)的索引,則根據(jù)index的值我們就能知道用戶點擊的是哪個li了,這樣我們再決定是哪個div顯示出來就可以了。(建議看代碼結(jié)合注釋更好理解一些)

注意:這里再說一下“排他思想”,即像這樣的列表或是表格之類的元素對象,一般可以統(tǒng)一獲取再存入一個數(shù)組中的元素對象,我們要控制當前選中的該元素和其他沒有被選中的元素“有所不同”時,就常常設(shè)計“排他思想”,主要分兩步實現(xiàn):1.用循環(huán)遍歷將這些所有的元素(包括選中的那個元素)都“干掉”,這一步主要是讓所有的元素“都一樣”誰也沒有不同之處,然后再給我們選中的那個元素添加上我們想要給它的樣式或功能(即留下我自己)。這樣兩步加起來,就實現(xiàn)了選中誰,誰“不一樣”的效果。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • js實現(xiàn)可得到不同顏色值的顏色選擇器實例

    js實現(xiàn)可得到不同顏色值的顏色選擇器實例

    這篇文章主要介紹了js實現(xiàn)可得到不同顏色值的顏色選擇器,實例分析了javascript顏色操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • webpack項目使用eslint建立代碼規(guī)范實現(xiàn)

    webpack項目使用eslint建立代碼規(guī)范實現(xiàn)

    這篇文章主要介紹了webpack項目使用eslint建立代碼規(guī)范實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • 第一次接觸神奇的Bootstrap表單

    第一次接觸神奇的Bootstrap表單

    第一次接觸神奇的Bootstrap表單,Bootstrap讓Web開發(fā)更迅速、更簡單,感興趣的小伙伴們可以參考一下
    2016-07-07
  • jsp 自動編譯機制詳細介紹

    jsp 自動編譯機制詳細介紹

    這篇文章主要介紹了 Jasper的自動檢測實現(xiàn)的機制比較簡單,依靠某后臺線程不斷檢測JSP文件與編譯后的class文件的最后修改時間是否相同,若相同則認為沒有改動,但倘若不同則需要重新編譯,需要的朋友可以參考下
    2016-12-12
  • three.js歐拉角和四元數(shù)的使用方法

    three.js歐拉角和四元數(shù)的使用方法

    這篇文章主要給大家介紹了關(guān)于three.js歐拉角和四元數(shù)的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用three.js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • javascript實現(xiàn)花樣輪播效果

    javascript實現(xiàn)花樣輪播效果

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)花樣輪播效果,一種是帶按鈕的輪播,一種是自動輪播,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Knockoutjs的環(huán)境搭建教程

    Knockoutjs的環(huán)境搭建教程

    最近要在項目中使用Knockoutjs,因此今天就首先研究了一下Knockoutjs的環(huán)境搭建,并進行了一個簡單的測試,需要的朋友可以了解下
    2012-11-11
  • JS實現(xiàn)動態(tài)生成表格并提交表格數(shù)據(jù)向后端

    JS實現(xiàn)動態(tài)生成表格并提交表格數(shù)據(jù)向后端

    這篇文章主要為大家詳細介紹了JS實現(xiàn)動態(tài)生成表格并提交表格數(shù)據(jù)向后端的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript代碼復(fù)用模式實例分析

    JavaScript代碼復(fù)用模式實例分析

    任何編程都提出代碼復(fù)用,否則話每次開發(fā)一個新程序或者寫一個新功能都要全新編寫的話,效率太差了,接下來我們將針對代碼復(fù)用來進行討論,需要的朋友可以參考下
    2012-12-12
  • javascript實現(xiàn)滾動條效果

    javascript實現(xiàn)滾動條效果

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)滾動條效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論