亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

  • js控件Kindeditor實現(xiàn)圖片自動上傳功能

    js控件Kindeditor實現(xiàn)圖片自動上傳功能

    這篇文章主要為大家詳細介紹了js控件Kindeditor實現(xiàn)圖片自動上傳功能的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 在百度搜索結果中去除掉一些網(wǎng)站的資料(通過js控制不讓顯示)

    在百度搜索結果中去除掉一些網(wǎng)站的資料(通過js控制不讓顯示)

    這篇文章主要介紹了在百度搜索結果中去除掉一些網(wǎng)站的資料(通過js控制不讓顯示),需要的朋友可以參考下
    2017-05-05
  • 利用ES6的Promise.all實現(xiàn)至少請求多長時間的實例

    利用ES6的Promise.all實現(xiàn)至少請求多長時間的實例

    下面小編就為大家?guī)硪黄肊S6的Promise.all實現(xiàn)至少請求多長時間的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 淺談js之字面量、對象字面量的訪問、關鍵字in的用法

    淺談js之字面量、對象字面量的訪問、關鍵字in的用法

    下面小編就為大家?guī)硪黄獪\談js之字面量、對象字面量的訪問、關鍵字in的用法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 第八篇Bootstrap下拉菜單實例代碼

    第八篇Bootstrap下拉菜單實例代碼

    這篇文章主要介紹了Bootstrap下拉菜單實例代碼的相關知識,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-06-06
  • JavaScript中捕獲/阻止捕獲、冒泡/阻止冒泡方法

    JavaScript中捕獲/阻止捕獲、冒泡/阻止冒泡方法

    本篇文章主要介紹了JavaScript中捕獲/阻止捕獲、冒泡/阻止冒泡方法,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • 關于onchange事件在IE和FF下的表現(xiàn)及解決方法

    關于onchange事件在IE和FF下的表現(xiàn)及解決方法

    本篇文章主要是對關于onchange事件在IE和FF下的表現(xiàn)及解決方法進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • js使用循環(huán)清空某個div中的input標簽值

    js使用循環(huán)清空某個div中的input標簽值

    清空div中input標簽值的方法有很多,下面為大家介紹下使用循環(huán)清空某個div中的input標簽值的具體實現(xiàn)
    2014-09-09
  • 用Javascript來生成ftp腳本的小例子

    用Javascript來生成ftp腳本的小例子

    昨天閑著沒事,又因為工作需要,寫了一個腳本,用來做ftp。當然不是直接做ftp,而是產(chǎn)生一個ftp的腳本,供ftp命令使用。
    2013-07-07
  • 最新評論