iis服务器助手广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JS电梯导航的实现示例
  • 611
分享到

JS电梯导航的实现示例

JS电梯导航 2023-05-19 08:05:44 611人浏览 独家记忆
摘要

目录预览效果主要的js代码整体代码预览效果 之前CSS 利用 scroll-behavior 和 锚点 实现了 电梯导航,点击可以看这篇文章css实现电梯导航的效果。评论区有人想让我

预览效果

之前CSS 利用 scroll-behavior 和 锚点 实现了 电梯导航,点击可以看这篇文章css实现电梯导航的效果。评论区有人想让我用js也实现一下,一开始我起初有点蒙,不知道css和js实现的效果有什么区别。后来我发现了。

css实现的只是单纯点击滑动到指定位置而已。而js实现不仅可以实现点击滑动,而且可以监听滑动事件,让滑动标题高亮,也就是有一个active

比如我们在这里滑倒了第一块区域的末尾,但是还没滑倒第二块区域,于是滑动标题还只是Section1高亮,当我们滑动到第二块区域时,滑动标题变成了Section2高亮

image.png

image.png

主要的js代码

主要思路就是对滑动事件进行监听。监听到当前滑动到的位置,然后判断当前所在的位置处于哪一块区域。给它add active的类,当滑走当前区域,就会remove active类。

监听点击事件,其实跟css 里的scroll-behavior差不多。点击导航,然后获取点击的href,然后获取要显示的区域的位置,然后滑动到那个位置,然后导航就会运行上面的监听加高亮类。

 // 获取所有的导航链接
        const links = document.querySelectorAll('.elevator a');
        // 获取所有的内容区块
        const sections = document.querySelectorAll('.section');
        // 监听窗口滚动事件
        window.addEventListener('scroll', function () {
            // 获取滚动条的位置
            const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
            // 遍历所有的内容区块
            sections.forEach(function (section) {
                // 获取内容区块的位置信息
                const offsetTop = section.offsetTop;
                const offsetHeight = section.offsetHeight;
                // 判断当前内容区块是否在可视范围内
                if (scrollTop >= offsetTop && scrollTop < offsetTop + offsetHeight) {
                    // 如果在可视范围内,则将对应的导航链接设置为 active 状态
                    links.forEach(function (link) {
                        if (link.getAttribute('href') === '#' + section.getAttribute('id')) {
                            link.classList.add('active');
                        } else {
                            link.classList.remove('active');
                        }
                    });
                }
            });
        });
        // 监听所有的导航链接的点击事件
        links.forEach(function (link) {
            link.addEventListener('click', function (event) {
                event.preventDefault();
                // 获取目标内容区块的位置信息
                const targetId = link.getAttribute('href');
                const targetSection = document.querySelector(targetId);
                const targetOffsetTop = targetSection.offsetTop;
                // 使用动画滑动到目标内容区块
                window.scrollTo({
                    top: targetOffsetTop,
                    behavior: 'smooth'
                });
            });
        });

整体代码

html

  • 导航 一个ul标签里面五个li 点击事件
  • 页面显示 五个块级区域
  <div class="elevator">
        <ul>
            <li><a href="#section1" rel="external nofollow" >Section 1</a></li>
            <li><a href="#section2" rel="external nofollow" >Section 2</a></li>
            <li><a href="#section3" rel="external nofollow" >Section 3</a></li>
            <li><a href="#section4" rel="external nofollow" >Section 4</a></li>
            <li><a href="#section5" rel="external nofollow" >Section 5</a></li>
        </ul>
    </div>
    <div class="section" id="section1">
        <h2>Section 1</h2>
        <p>第一块 </p>
        <video
            src="https://img-baofun.zhhainiao.com/pcwallpaper_uGC/preview/2366564fa6b83158208eb3181752a8d6_preview.mp4"
            autoplay muted loop></video>
    </div>
    <div class="section" id="section2">
        <h2>Section 2</h2>
        <p>第二块 </p>
        <video src="Https://img-baofun.zhhainiao.com/market/133/3760b2031ff41ca0bd80bc7a8a13f7bb_preview.mp4" autoplay
            muted loop></video>
    </div>
    <div class="section" id="section3">
        <h2>Section 3</h2>
        <p>第三块 </p>
        <video src="https://img-baofun.zhhainiao.com/market/semvideo/3fc6cdef4427e61be69096c6ebb59a1c_preview.mp4"
            autoplay muted loop></video>
    </div>
    <div class="section" id="section4">
        <h2>Section 4</h2>
        <p>第四块 </p>
        <video src="https://img-baofun.zhhainiao.com/market/semvideo/6ac24b3f50fda0b1a55f7ff25c6b62af_preview.mp4"
            autoplay muted loop></video>
    </div>
    <div class="section" id="section5">
        <h2>Section 5</h2>
        <p>第五块 </p>
        <video src="https://img-baofun.zhhainiao.com/market/133/97ba6b60662ab4f31ef06cdf5a5f8e94_preview.mp4" autoplay
            muted loop></video>
    </div>

css

.elevator 固定电梯按钮,也就是导航

.elevator {
    position: fixed; 
    top: 50%; 
    right: 0; 
    transfORM: translateY(-50%); 
}
.elevator ul {
    list-style: none; 
    margin: 0; 
    padding: 0; 
}
.elevator li {
    margin: 10px 0; 
}
.elevator a {
    display: block; 
    padding: 10px; 
    background-color: #ccc; 
    color: #000; 
    text-decoration: none; 
}
.elevator a.active {
    background-color: #000; 
    color: #fff; 
}

.section {
    width: 90vw; 
    height: 110vh; 
}
.section video {
    width: 100%; 
    height: 90%; 
}

js

就是之前的主要的js代码

到此这篇关于JS电梯导航的实现示例的文章就介绍到这了,更多相关JS电梯导航内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: JS电梯导航的实现示例

本文链接: https://www.lsjlt.com/news/212729.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS电梯导航的实现示例
    目录预览效果主要的js代码整体代码预览效果 之前css 利用 scroll-behavior 和 锚点 实现了 电梯导航,点击可以看这篇文章css实现电梯导航的效果。评论区有人想让我...
    99+
    2023-05-19
    JS电梯导航
  • JQuery实现电梯导航特效
    本文分享一个基于JQuery实现的电梯导航效果,效果如下:  以下是代码实现: <!DOCTYPE html> <html lang="en"> ...
    99+
    2024-04-02
  • JQuery实现电梯导航效果
    本文实例为大家分享了JQuery实现电梯导航效果的具体代码,供大家参考,具体内容如下 分享一个基于JQuery实现的电梯导航效果,效果如下:  以下是代码实现: <...
    99+
    2024-04-02
  • JQuery怎么实现电梯导航特效
    这篇“JQuery怎么实现电梯导航特效”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“JQuery怎么实现电梯导航特效”文章吧...
    99+
    2023-06-29
  • 使用jquery库实现电梯导航效果
    一般来说,一些大型的电商网站首页,页面内容很多,页面会很长,这时候大部分网站都选择使用电梯导航,使页面跳转到相应位置或者返回顶部。 下面使用jquery库来实现电梯导航 基本思路 电...
    99+
    2024-04-02
  • jQuery实现电梯导航案例详解(切换 网页区域)
    目录前言:一:效果展示二:实现原理剖析  2.1 网页结构: 2.2 显示隐藏函数 实现分析: 2.3 点击导航滚至对应板块 实现分析:&nb...
    99+
    2024-04-02
  • 如何使用jquery库实现电梯导航效果
    这篇文章主要介绍如何使用jquery库实现电梯导航效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基本思路电梯导航基本上就是使用元素距离页面头部的高度offsetTop和页面滚动的距离scrollTop来进行比较事...
    99+
    2023-06-29
  • js如何实现电商侧边导航效果
    这篇文章给大家分享的是有关js如何实现电商侧边导航效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。知识要点实现原理:1.点击楼层跳相应楼层,用的是锚点定位电梯:<a hr...
    99+
    2024-04-02
  • Vue实现动态路由导航的示例
    目录1、导航守卫二、功能展示 三、原理四、功能实现⛵小结1、导航守卫 “导航” 表示路由正在发生改变 正如其名,vue-router 提供的导航守卫...
    99+
    2023-02-24
    Vue 动态路由导航 Vue 路由导航
  • ANDROID BottomNavigationBar底部导航栏的实现示例
    第一种介绍的就是使用开源库,因为使用开源库最简单,也更加的符合我们的审美标准,同时BottomNavigationBar还是符合当前的Material Design标准的。效果展示依赖compile'com.ashokvarma.andro...
    99+
    2023-05-30
    android bottomnavigationbar ott
  • jQuery实现侧边导航栏及滑动电梯效果(仿淘宝)
    效果图 实现代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=...
    99+
    2024-04-02
  • Vue 编程式路由导航的实现示例
    目录router- link的replace属性编程式路由导航缓存路由组件两个新的生命钩子router- link的replace属性 1.作用:控制路由跳转时操作浏览器历史记录的模...
    99+
    2024-04-02
  • react+zarm实现底部导航栏的示例代码
    目录需要实现的效果实现过程1.使用 prop-types 库进行类型检查2.使用 useNavigate3.编写标签栏组件4.使用标签栏组件5.添加对应的页面路由6.效果参考资料需要...
    99+
    2024-04-02
  • js+css实现三级导航菜单
    本文实例为大家分享了js+css实现三级导航菜单的具体代码,供大家参考,具体内容如下 导航菜单hover事件用css实现相对容易,只需要将透明度更改即可,如果想要菜单有一个渐变的效果...
    99+
    2024-04-02
  • JS 实现导航栏悬停效果
    JS-实现导航栏悬停 先布个局: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "ht...
    99+
    2022-11-15
    导航栏 悬停
  • JS实现网页导航条特效
    本文实例给大家分享了一个用原生JS实现的比较实用的网页导航条特效,当页面滚动时,导航条会发生变化,效果如下: 以下是代码实现,欢迎大家复制粘贴和收藏。 <!DOCTYPE...
    99+
    2024-04-02
  • Android实现字母导航控件的示例代码
    目录自定义属性Measure测量坐标计算绘制Touch事件处理数据组装显示效果今天分享一个以前实现的通讯录字母导航控件,下面自定义一个类似通讯录的字母导航 View,可以知道需要自定...
    99+
    2024-04-02
  • 示例演示uniapp如何实现自定义导航栏
    随着移动端应用的发展,导航栏成为了许多应用必备的功能之一。而Uni-app是一款可以同时开发多个移动端应用(包括iOS、Android等)的全栈式框架,它提供了丰富的组件以及API,方便开发者快速复用和定制应用功能。在Uni-app中,要实...
    99+
    2023-05-14
  • js如何实现二级导航功能
    小编给大家分享一下js如何实现二级导航功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图:代码如下:<!DOCTYP...
    99+
    2024-04-02
  • 原生js实现波浪导航效果
    本文实例为大家分享了原生js实现波浪导航效果的具体代码,供大家参考,具体内容如下 展示效果: 源码展示: <!doctype html> <html> &l...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作