利用a標(biāo)簽的錨點(diǎn)實(shí)現(xiàn)目錄結(jié)構(gòu)

平時(shí)我們看到一些官方文檔都會(huì)發(fā)現(xiàn)一些類(lèi)似的結(jié)構(gòu),左邊是一個(gè)固定側(cè)邊欄目錄,右邊是內(nèi)容展示區(qū),點(diǎn)擊目錄的每一項(xiàng),右邊都會(huì)跳轉(zhuǎn)到對(duì)應(yīng)的位置,其實(shí)這就是錨點(diǎn)實(shí)現(xiàn)的。

圖片以elementUI為例子,就是這樣一種目錄結(jié)構(gòu)。

學(xué)過(guò)vue的我,一開(kāi)始以為是用路由來(lái)實(shí)現(xiàn)的,雖然也可以實(shí)現(xiàn),但著實(shí)有些雞肋。

其實(shí)原理十分簡(jiǎn)單,就是用到一個(gè)a標(biāo)簽的錨點(diǎn)來(lái)實(shí)現(xiàn)的。

<a href="#title1">第一章</a>
<a name="title1">
    <div class="item">內(nèi)容1</div>
</a>

下面是我個(gè)人寫(xiě)的一個(gè)小demo,點(diǎn)擊不同的章節(jié)跳轉(zhuǎn)到不同的內(nèi)容區(qū)域。


<!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>
        * {
            margin: 0;
            padding: 0;
        }

        .container {
            display: flex;
        }

        .left {
            flex: 1;
            background-color: rgb(10, 219, 219);
            display: flex;
            flex-direction: column;
            position: fixed;
            width: 200px;
            height: 100%;

        }

        .right {
            flex: 5;
            margin-left: 200px;
            background-color: aquamarine;
        }
        .right a {
            display: block;
        }
        .item {
            height: 500px;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="left">
            <a href="#title1">第一章</a>
            <a href="#title2">第二章</a>
            <a href="#title3">第三章</a>
            <a href="#title4">第四章</a>
            <a href="#title5">第五章</a>
            <a href="#title6">第六章</a>
            <a href="#title7">第七章</a>
            <a href="#title8">第八章</a>
            <a href="#title9">第九章</a>
        </div>
        <div class="right">
            <a name="title1">
                <div class="item">內(nèi)容1</div>
            </a>
            
            <a name="title2">
                <div class="item">內(nèi)容2</div>
            </a>
            <a name="title3">
                <div class="item">內(nèi)容3</div>
            </a>
            <a name="title4">
                <div class="item">內(nèi)容4</div>
            </a>

            <a name="title5">
                <div class="item">內(nèi)容5</div>
            </a>
            <a name="title6">
                <div class="item">內(nèi)容6</div>
            </a>
            <a name="title7">
                <div class="item">內(nèi)容7</div>
            </a>
            <a name="title8">
                <div class="item">內(nèi)容8</div>
            </a>
            <a name="title9">
                <div class="item">內(nèi)容9</div>
            </a>
        </div>
    </div>
</body>
</html>

模板二:推薦

<!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>
</head>
<style>
    *{
        margin: 0;
        padding: 0;
    }
    .container{
        display: flex;
    }
    .siderBar{
        position: fixed;
        top: 0;
        left: 0;
        background-color: darkcyan;
        min-width: 200px;
    }
    .siderBar a{
        display: block;
    }
    .main {
        margin-left: 200px;
        flex: 1;
    }
    .main div{
        height: 500px;
    }
    #a1:nth-of-type(1){
        background: #000;
    }
    #a2:nth-of-type(2){
        background: rgb(196, 71, 71);
    }
    #a3:nth-of-type(3){
        background: rgb(18, 184, 59);
    }
    #a4:nth-of-type(4){
        background: rgb(212, 200, 21);
    }
</style>
<body>
    <div class="container">
        <div class="siderBar">
            <a href="#a1">第一章</a>
            <a href="#a2">第二章</a>
            <a href="#a3">第三章</a>
            <a href="#a4">第四章</a>
        </div>
        <div class="main">
            <div id="a1">內(nèi)容1</div>
            <div id="a2">內(nèi)容2</div>
            <div id="a3">內(nèi)容3</div>
            <div id="a4">內(nèi)容4</div>
        </div>
    </div>
</body>
</html>

附帶小知識(shí):

a的target="_blank"會(huì)新開(kāi)一個(gè)頁(yè)面。

<a href="http://" target="_blank" rel="noopener noreferrer"></a>

獲取網(wǎng)頁(yè)的url地址

console.log(location.href)

哈希地址就是#號(hào)后面的一段,獲取哈希地址方式:

console.log(location.hash)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容