最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何通過JavaScript、css、H5實(shí)現(xiàn)簡單的tab欄切換和復(fù)用功能

 更新時(shí)間:2022年11月28日 10:15:51   作者:小余努力搬磚  
tab切換在項(xiàng)目中也算是常用技術(shù),一般實(shí)現(xiàn)tab切換都用js或者jq實(shí)現(xiàn),下面這篇文章主要給大家介紹了關(guān)于如何通過JavaScript、css、H5實(shí)現(xiàn)簡單的tab欄切換和復(fù)用功能的相關(guān)資料,需要的朋友可以參考下

一、效果展示

二、實(shí)現(xiàn)的大致原理

1.我們先通過css 和h5布局得到最基本的tab欄樣式(有代碼參考)

2.在獲得樣式,給我們所需要點(diǎn)擊的目標(biāo)設(shè)置監(jiān)聽事件,在獲取節(jié)點(diǎn),設(shè)置一個(gè)自定義的節(jié)點(diǎn)屬性index,通過它在獲取點(diǎn)擊出現(xiàn)樣式的節(jié)點(diǎn),在經(jīng)過尋找元素,設(shè)置全取消,點(diǎn)擊相應(yīng)的節(jié)點(diǎn)出現(xiàn)的效果。這里獲取節(jié)點(diǎn)方式,都是通過點(diǎn)擊元素獲取父元素,在獲得子元素,同級獲得兄弟元素,在獲取兄弟元素的子元素(籠統(tǒng)的解釋,細(xì)節(jié)部分看代碼段的解釋)

三、H5的布局

沒有特殊的地方,都是基本的寫法,只要給定一定的選擇器就可以了

    <div class="tab">
        <div class="nav">
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="hover">公司新聞</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >公司動(dòng)態(tài)</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >行業(yè)新聞</a>
        </div>
        <div class="nav_con"> 
            <div>內(nèi)容</div>
            <div>動(dòng)態(tài)</div>
            <div>行業(yè)</div>
        </div>
    </div>
 
    <div class="tab">
        <div class="nav">
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="hover">大學(xué)</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >中學(xué)</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >小學(xué)</a>
        </div>
        <div class="nav_con">
            <div>大學(xué)內(nèi)容</div>
            <div>中學(xué)內(nèi)容</div>
            <div>小學(xué)內(nèi)容</div>
        </div>
    </div>

四、CSS樣式

為了得到視屏中的樣式,需要設(shè)置最基本的效果,通過浮動(dòng),是元素在同一行,浮動(dòng)會(huì)脫離文檔流,可以給a標(biāo)簽設(shè)置寬高,可以設(shè)置一些外邊距,使得好看一些。注意設(shè)置出現(xiàn)內(nèi)容的消失,我們默認(rèn)只出現(xiàn)第一個(gè)。

        a{
            text-decoration: none;
            width: 180px;
            height: 30px;
            line-height: 30px;
            text-align: center;
            color: #666;
            float: left;
            margin-right: 15px;
        }
        .nav a{
            background-color: beige;
        }
        .nav a.hover{
            background-color: blue;
        }
        .nav_con div:first-child~div{
            display: none;
        }
        .nav::after{
            content: '';
            display: block;
            clear: both;
        }
    .nav_con{
        margin-bottom: 50px;
    }

五、JS代碼內(nèi)容

按照順序來,流程如下

獲取元素

通過委派給父親添加監(jiān)聽事件

先獲得當(dāng)前的父節(jié)點(diǎn),在通過父節(jié)點(diǎn)獲得所有的子節(jié)點(diǎn)

設(shè)置排他思想

給每一個(gè)子節(jié)點(diǎn)加上一個(gè)自定義屬性 index

獲取當(dāng)前被點(diǎn)擊的nav a上面的屬性index

獲取當(dāng)前元素的父級元素,在獲得父級的兄弟,在找到子元素

當(dāng)前nav_con 顯示內(nèi)容

當(dāng)前節(jié)點(diǎn)獲得hover樣式

 let navNodes = document.querySelectorAll('.nav');
         for(let i=0;i<navNodes.length;i++){
        //通過委派給父親添加監(jiān)聽事件
    navNodes[i].addEventListener('click',function(e){
        //先獲得當(dāng)前的父節(jié)點(diǎn),在通過父節(jié)點(diǎn)獲得所有的子節(jié)點(diǎn)
 let navs = e.target.parentNode.children;
        //設(shè)置排他思想
    for(let j=0;j<navs.length;j++){
    navs[j].className='';
        //給每一個(gè)子節(jié)點(diǎn)加上一個(gè)自定義屬性 index
    navs[j].setAttribute("index",j)
}
        //獲取當(dāng)前被點(diǎn)擊的nav a上面的屬性index
 let thisIndex = e.target.getAttribute("index");
        //獲取當(dāng)前元素的父級元素,在獲得父級的兄弟,在找到子元素
 let nav_cons = e.target.parentNode.nextElementSibling.children;
        for(let j=0;j<nav_cons.length;j++){
        nav_cons[j].style.display = "none";
}
        //當(dāng)前nav_con 顯示內(nèi)容
        nav_cons[thisIndex].style.display="block"
 
       //當(dāng)前節(jié)點(diǎn)獲得hover樣式
        e.target.className = "hover"
})
}

六、完整代碼

<!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>Document</title>
    <style>
        a{
            text-decoration: none;
            width: 180px;
            height: 30px;
            line-height: 30px;
            text-align: center;
            color: #666;
            float: left;
            margin-right: 15px;
        }
        .nav a{
            background-color: beige;
        }
        .nav a.hover{
            background-color: blue;
        }
 
        .nav_con div:first-child~div{
            display: none;
        }
        .nav::after{
            content: '';
            display: block;
            clear: both;
        }
    .nav_con{
        margin-bottom: 50px;
    }
    </style>
</head>
<body>
    <div class="tab">
        <div class="nav">
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="hover">公司新聞</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >公司動(dòng)態(tài)</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >行業(yè)新聞</a>
        </div>
        <div class="nav_con"> 
            <div>內(nèi)容</div>
            <div>動(dòng)態(tài)</div>
            <div>行業(yè)</div>
        </div>
    </div>
 
    <div class="tab">
        <div class="nav">
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  class="hover">大學(xué)</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >中學(xué)</a>
            <a href="javascript:;" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >小學(xué)</a>
        </div>
        <div class="nav_con">
            <div>大學(xué)內(nèi)容</div>
            <div>中學(xué)內(nèi)容</div>
            <div>小學(xué)內(nèi)容</div>
        </div>
    </div>
 
 
 
    <script>
        let navNodes = document.querySelectorAll('.nav');
         for(let i=0;i<navNodes.length;i++){
        //通過委派給父親添加監(jiān)聽事件
            navNodes[i].addEventListener('click',function(e){
                //先獲得當(dāng)前的父節(jié)點(diǎn),在通過父節(jié)點(diǎn)獲得所有的子節(jié)點(diǎn)
                let navs = e.target.parentNode.children;
                for(let j=0;j<navs.length;j++){
                    navs[j].className='';
                    //給每一個(gè)子節(jié)點(diǎn)加上一個(gè)自定義屬性 index
                    navs[j].setAttribute("index",j)
                }
                //獲取當(dāng)前被點(diǎn)擊的nav a上面的屬性index
                let thisIndex = e.target.getAttribute("index");
                //獲取當(dāng)前元素的父級元素,在獲得父級的兄弟,在找到子元素
                let nav_cons = e.target.parentNode.nextElementSibling.children;
                for(let j=0;j<nav_cons.length;j++){
                    nav_cons[j].style.display = "none";
                }
                //當(dāng)前nav_con 顯示內(nèi)容
                nav_cons[thisIndex].style.display="block"
 
                //當(dāng)前節(jié)點(diǎn)獲得hover樣式
                e.target.className = "hover"
            })
         }
 
 
 
    </script>
</body>
</html>

總結(jié)

到此這篇關(guān)于如何通過JavaScript、css、H5實(shí)現(xiàn)簡單的tab欄切換和復(fù)用功能的文章就介紹到這了,更多相關(guān)JS css H5實(shí)現(xiàn)tab欄切換和復(fù)用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • ES6中async函數(shù)與await表達(dá)式的基本用法舉例

    ES6中async函數(shù)與await表達(dá)式的基本用法舉例

    async和await是我們進(jìn)行Promise時(shí)的一個(gè)語法糖,async/await為了讓我們書寫代碼時(shí)更加流暢,增強(qiáng)了代碼的可讀性,下面這篇文章主要給大家介紹了關(guān)于ES6中async函數(shù)與await表達(dá)式的基本用法,需要的朋友可以參考下
    2022-07-07
  • 如何為你的JavaScript代碼日志著色詳解

    如何為你的JavaScript代碼日志著色詳解

    這篇文章主要給大家介紹了關(guān)于如何為你的JavaScript代碼日志進(jìn)行著色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用JavaScript具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript本地儲存:localStorage、sessionStorage、cookie的使用

    JavaScript本地儲存:localStorage、sessionStorage、cookie的使用

    這篇文章主要介紹了JavaScript本地儲存:localStorage、sessionStorage、cookie的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • html代碼調(diào)試腳本

    html代碼調(diào)試腳本

    html代碼調(diào)試腳本...
    2006-07-07
  • js判斷設(shè)備是否為PC并調(diào)整圖片大小

    js判斷設(shè)備是否為PC并調(diào)整圖片大小

    這篇文章主要介紹了js判斷設(shè)備是否為PC并調(diào)整圖片大小,需要的朋友可以參考下
    2014-02-02
  • js斷點(diǎn)調(diào)試心得分享(必看篇)

    js斷點(diǎn)調(diào)試心得分享(必看篇)

    下面小編就為大家分享一篇js斷點(diǎn)調(diào)試心得,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • 微信小程序版本機(jī)制和storage如何平滑兼容詳解

    微信小程序版本機(jī)制和storage如何平滑兼容詳解

    這篇文章主要給大家介紹了關(guān)于微信小程序版本機(jī)制和storage如何平滑兼容的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-12-12
  • es6處理數(shù)組的方法匯總(非常詳細(xì))

    es6處理數(shù)組的方法匯總(非常詳細(xì))

    ES6中引入了一些新的數(shù)組方法,例如:Array.of(),Array.from()等,下面這篇文章主要給大家介紹了關(guān)于es6處理數(shù)組的方法匯總,需要的朋友可以參考下
    2023-06-06
  • 使用Curl命令查看請求響應(yīng)時(shí)間方法

    使用Curl命令查看請求響應(yīng)時(shí)間方法

    curl命令查看請求響應(yīng)時(shí)間的方法非常簡單,今天小編抽空給大家介紹下使用Curl命令查看請求響應(yīng)時(shí)間方法,感興趣的朋友一起看看吧
    2016-11-11
  • JavaScript類型系統(tǒng)之Object詳解

    JavaScript類型系統(tǒng)之Object詳解

    對象其實(shí)就是一組數(shù)據(jù)和功能的集合。對象可以通過執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對象類型的名稱來創(chuàng)建。而創(chuàng)建Object類型的實(shí)例并為其添加屬性和(或)方法,就可以創(chuàng)建自定義對象
    2016-01-01

最新評論

明水县| 湘阴县| 嘉荫县| 平舆县| 鄂温| 六盘水市| 沂南县| 阳曲县| 高要市| 通化县| 高邮市| 屯门区| 称多县| 新河县| 高要市| 宣城市| 清水河县| 杭锦后旗| 鹤壁市| 普宁市| 改则县| 屯留县| 鄂伦春自治旗| 林甸县| 寻甸| 元江| 大同县| 华坪县| 共和县| 贡山| 沂南县| 澜沧| 广饶县| 蒙城县| 襄垣县| 潼南县| 会同县| 临沂市| 夹江县| 红安县| 宜黄县|