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

JavaScript制作樓層導航效果流程詳解

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

本期目標

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

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

1. 功能實現(xiàn)

1.1 結構層

<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 樓層跳轉

點擊左側菜單中的樓層按鈕對應跳轉到相應的樓層。

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 + ']');
        // 設置卷動
        document.documentElement.scrollTop = contentPart.offsetTop;
    }
}

1.3.2 樓層監(jiān)聽

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

// 頁面卷動時,左側盒子欄目背景隨之變化
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ù)組下標
    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) {
                // 當前樓層添加樣式
                lis[j].className = 'current';
            } else {
                // 去掉其他樓層的樣式
                lis[j].className = '';
            }
        }
    }
}

2. 效果預覽

在這里插入圖片描述

3. 項目代碼

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

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

相關文章

最新評論