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

JavaScript制作樓層導(dǎo)航效果流程詳解

 更新時間:2021年10月19日 15:30:27   作者:daixiangcn  
項目中遇到比較多的的文檔內(nèi)容,為了方便查找里面的小內(nèi)容,一般都會在左側(cè)或者右側(cè)放一個固定樓層的導(dǎo)航欄,今天就來說一下這個固定樓層導(dǎo)航欄的思路以及實現(xiàn)的方法

本期目標(biāo)

使用JavaScript制作樓層導(dǎo)航效果,實現(xiàn)兩個功能:

  • 樓層跳轉(zhuǎn)
  • 樓層監(jiān)聽

1. 功能實現(xiàn)

1.1 結(jié)構(gòu)層

<div id="box" class="box">
    <ul class="list">
        <li class="content-part" data-n="欄目一">欄目一</li>
        <li class="content-part" data-n="欄目二">欄目二</li>
        <li class="content-part" data-n="欄目三">欄目三</li>
        <li class="content-part" data-n="欄目四">欄目四</li>
        <li class="content-part" data-n="欄目五">欄目五</li>
    </ul>
</div>
<div class="left">
    <ul id="left-list">
        <li data-n="欄目一">欄目一</li>
        <li data-n="欄目二">欄目二</li>
        <li data-n="欄目三">欄目三</li>
        <li data-n="欄目四">欄目四</li>
        <li data-n="欄目五">欄目五</li>
    </ul>
</div>

1.2 樣式層

<style>
    * {
        margin: 0;
        padding: 0;
    }
    body .box {
        width: 1200px;
    }
    body .box {
        margin: 0 auto;
    }
    ul {
        list-style: none;
    }
    body .box ul li {
        height: 800px;
        background-color: silver;
        margin-bottom: 20px;
        font-size: 30px;
        font-weight: bold;
    }
    body .left {
        position: fixed;
        left: 20px;
        bottom: 100px;
        width: 100px;
        height: 250px;
        top: 50%;
        margin-top: -125px;
        background-color: silver;
    }
    body .left ul li {
        height: 50px;
        line-height: 50px;
        text-align: center;
        cursor: pointer;
    }
    body .current {
        color: #fff;
        background-color: tomato;
    }
</style>

1.3 行為層

1.3.1 樓層跳轉(zhuǎn)

點擊左側(cè)菜單中的樓層按鈕對應(yīng)跳轉(zhuǎn)到相應(yīng)的樓層。

var oList = document.getElementById('left-list');
// 點擊事件委托
oList.onclick = function (e) {
    if (e.target.tagName.toLowerCase() == 'li') {
        // 取data-n值
        var n = e.target.getAttribute('data-n');
        // []屬性選擇器
        var contentPart = document.querySelector('.content-part[data-n=' + n + ']');
        // 設(shè)置卷動
        document.documentElement.scrollTop = contentPart.offsetTop;
    }
}

1.3.2 樓層監(jiān)聽

樓層監(jiān)聽,頁面卷動時,左側(cè)菜單中的樓層欄目背景隨之變化。

// 頁面卷動時,左側(cè)盒子欄目背景隨之變化
var contents = document.querySelectorAll('.content-part');
var lis = document.querySelectorAll('#left-list li');
var offsetTopArr = [];
for (var i = 0; i < contents.length; i++) {
    offsetTopArr.push(contents[i].offsetTop);
}
// 為了方便比較,追加無窮大
offsetTopArr.push(Infinity);
// 監(jiān)聽卷動
var nowFloor = -1;
window.onscroll = function (e) {
    var nowScrollTop = document.documentElement.scrollTop;
    // break的i值即為盒子數(shù)組下標(biāo)
    for (var i = 0; i < offsetTopArr.length; i++) {
        if (nowScrollTop >= offsetTopArr[i] && nowScrollTop < offsetTopArr[i + 1]) {
            break;
        }
    }
    // 樓層不等,進行樣式更改
    if (nowFloor != i) {
        nowFloor = i;
        for (var j = 0; j < lis.length; j++) {
            if (j == i) {
                // 當(dāng)前樓層添加樣式
                lis[j].className = 'current';
            } else {
                // 去掉其他樓層的樣式
                lis[j].className = '';
            }
        }
    }
}

2. 效果預(yù)覽

在這里插入圖片描述

3. 項目代碼

點擊前往代碼倉庫,查看完整代碼。

到此這篇關(guān)于JavaScript制作樓層導(dǎo)航效果流程詳解的文章就介紹到這了,更多相關(guān)JavaScript 樓層導(dǎo)航內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javascript 跨瀏覽器的事件系統(tǒng)

    javascript 跨瀏覽器的事件系統(tǒng)

    從技術(shù)上講,javascript并沒有提供內(nèi)置的系統(tǒng)來實現(xiàn)這個非常重要的事件驅(qū)動編程,不過得益于瀏覽器的DOM 事件模型,這缺點并沒有過多地暴露出來。
    2010-03-03
  • 微信小程序云開發(fā)之模擬后臺增刪改查

    微信小程序云開發(fā)之模擬后臺增刪改查

    這篇文章主要為大家詳細介紹了微信小程序云開發(fā)之模擬后臺增刪改查,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 擴展JavaScript功能的正確方法(譯文)

    擴展JavaScript功能的正確方法(譯文)

    JavaScript已經(jīng)內(nèi)置了很多強大的方法,但有時你需要的某個功能在內(nèi)置的方法中沒有,我們怎么來優(yōu)雅地擴展JavaScript功能呢
    2012-04-04
  • 基于JavaScript操作DOM常用的API小結(jié)

    基于JavaScript操作DOM常用的API小結(jié)

    DOM(Document Object Model)即文檔對象模型,針對 HTML 和 XML 文檔的 API(應(yīng)用程序接口)。本篇文章給大家介紹javascript操作dom常用的api小結(jié),對javascript dom api相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • JS實現(xiàn)網(wǎng)頁搶購功能(觸發(fā),終止腳本)

    JS實現(xiàn)網(wǎng)頁搶購功能(觸發(fā),終止腳本)

    小編通過一個網(wǎng)頁式的搶購功能的實現(xiàn)給大家講解一下JS如何觸發(fā)和終止腳本來完成這個任務(wù)。
    2017-11-11
  • 詳解 微信小程序開發(fā)框架(MINA)

    詳解 微信小程序開發(fā)框架(MINA)

    小程序使用的是MINA框架,目的是通過簡單、高效的方式讓開發(fā)者可以在微信中開發(fā)具有原生App體驗的服務(wù)。 這篇文章主要介紹了微信小程序開發(fā)框架(MINA),需要的朋友可以參考下
    2019-05-05
  • div移動 輸入框不能輸入的問題

    div移動 輸入框不能輸入的問題

    使用了移動層,可里面的輸入框卻不能使用了,下面是解決方法需要的朋友可以參考下。
    2009-11-11
  • JavaScript中的迭代器和可迭代對象與生成器

    JavaScript中的迭代器和可迭代對象與生成器

    這篇文章主要介紹了JavaScript中的迭代器和可迭代對象與生成器,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • Nuxt配置Element-UI按需引入的操作方法

    Nuxt配置Element-UI按需引入的操作方法

    這篇文章主要介紹了Nuxt配置Element-UI按需引入方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Bootstrap輪播圖的使用和理解4

    Bootstrap輪播圖的使用和理解4

    這篇文章主要為大家詳細介紹了關(guān)于Bootstrap輪播圖的使用和理解的學(xué)習(xí)記錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12

最新評論

九龙坡区| 大竹县| 扎兰屯市| 金乡县| 娱乐| 唐山市| 新民市| 永济市| 东辽县| 饶阳县| 乐东| 稷山县| 平陆县| 墨竹工卡县| 双峰县| 米脂县| 公安县| 蓝山县| 辰溪县| 磐石市| 萨嘎县| 新干县| 安新县| 炎陵县| 枣阳市| 雅江县| 苏尼特左旗| 调兵山市| 东方市| 咸宁市| 山东省| 临潭县| 易门县| 张北县| 东山县| 九寨沟县| 福安市| 万州区| 娱乐| 桦川县| 耒阳市|