当前位置:首页 > web实践 > 正文内容

固定导航(粘性导航、吸顶导航)

唐朝2年前 (2024-04-15)web实践2642

固定导航,又称粘性导航或吸顶导航,是指网站中的主导航栏在用户滚动页面时,当导航栏到达屏幕顶部或者某个高度时,会自动固定在浏览器窗口的顶部位置,不再随页面内容一起滚动。

目的

实现固定导航(粘性导航)功能

运用到的知识点

1、滚动事件监听:使用window.addEventListener('scroll', callback)监听窗口的滚动事件,或使用jQuery的$(window).on('scroll', callback)方法。

2、DOM操作与样式变更:在滚动事件回调函数中,通过document.querySelector()方法获取导航栏元素并直接修改样式属性(如element.style.position = 'fixed')。

3、阈值判断:计算滚动条距离顶部的距离,当其达到预设阈值(如刚好要离开视口)时触发固定行为。可以使用window.scrollY方法获取高度位置。

本次实践在《简易首页制作》这个基础上调整。

步骤

1、添加事件监听和元素获取

在文档加载完成时,为窗口添加scroll事件监听器,并获取导航栏元素。

document.addEventListener("DOMContentLoaded", function () {
    const nav = document.querySelector('.nav');
    window.addEventListener("scroll", function () {
        const scrollTop = window.scrollY;
        // 固定导航效果代码将在此处编写
    });
});

2、通过阈值判断对样式做出变更

在滚动事件回调函数内部,根据滚动距离(scrollTop)与预设阈值的关系,动态更改导航栏样式。已给出的代码段提供了基本逻辑框架,但需稍作调整以提高性能和可维护性:

const threshold = 200; // 定义阈值为200px

// ... 在scroll事件回调函数内 ...

if (scrollTop > threshold) {
    // 导航栏固定到顶部
    nav.classList.add('fixed-nav'); // 添加固定样式类
} else {
    // 导航栏恢复原状
    nav.classList.remove('fixed-nav'); // 移除固定样式类
}

同时,在CSS文件中定义.fixed-nav样式类,包含固定导航所需的所有样式:

.fixed-nav {
    position: fixed;
    top: 0;
    width: 100%;
    /* 可根据需要添加其他样式,如背景色、边距、阴影等 */
}

3、完

扩展阅读

除了上述JavaScript方案外,现代浏览器支持使用CSS的position: sticky属性实现固定导航,无需任何JavaScript代码:

.nav {
    position: sticky;
    top: 0;
    /* 其他样式 */
}

尽管position: sticky简单易用,但它存在一定的兼容性问题,部分老旧或非标准浏览器可能不支持。在实际项目中,请根据目标浏览器范围权衡选择合适的实现方式。

效果演示

请查看效果演示以直观感受固定导航功能的实际效果。

    文档如有描述不清楚、错误或者过时的地方,欢迎留言指出。

    文档、教程内容会不定时更新,转载请标明原帖链接,以免让过时的教程流入网络。

    分享给朋友:

    “固定导航(粘性导航、吸顶导航)” 的相关文章

    萌系返回顶部

    萌系返回顶部

            一款创新且富有情感化交互设计的小功能,专为提升用户体验而精心打造。该功能会在用户浏览网页内容并向下滚动至预设阈值高度时,在网页右下角自动显现一个生动可爱的小人图标。这一设计旨在吸引用户的注意力,并提供返回...

    动态数据管理

    动态数据管理

    一个可定制的动态文本输入列表管理功能,主要用于Web应用程序中,允许用户按需添加和操作多个文本输入项。通过此功能,用户可以根据实际需求灵活地增加、删除和重新排序多个文本输入项,极大地提高了交互性和定制性。1、构造HTML结构使用!DOCTYPE html声明文档类型,并通过html:5的快捷代码创建...

    通过《通义灵码》生成想要的功能

    通过《通义灵码》生成想要的功能

    通义灵码(TONGYI Lingma)是一款强大的智能编码助手,能够帮助开发者在编写代码时提高效率和质量。要使用它来生成特定功能。我们来实现下下面的功能。功能:使用HTML5拖放API实现购物车拖放效果,如图所示:一、确认问题通义灵码目前是不支持发送图片的,我们需要把功能上没写,但图片上有的功能一并...

    后台地址与找回密码

    网站默认后台地址:域名/zb_system/login.php如何修改后台地址在应用中心下载并安装插件《后台快捷方式》,即可自定义后台地址。下次访问的时候直接使用自己的自定义地址即可找回密码下载重置文件《https://update.zblogcn.com/tools/nologin.zip》,解压...

    h5网站添加统计代码

    1、进入百度统计官方网站 https://tongji.baidu.com/2、登录账户3、在控制面板界面,点击《使用配置》4、在《使用配置》左侧导航的《网站列表》界面,点击《添加站点》5、输入以下信息网站域名: 格式 b9b31053.idc.wod.xyz网站首页:格式&nb...

    虚拟主机安装zblog程序

    虚拟主机安装zblog程序

    本教程用于指导怎么通过虚拟主题全新安装一个zblogphp站点,数据库采用mysql。准备工作1、虚拟主机的程序语言是php,版本推荐选8.0以上版本,如没有8.0及其以上版本则选择当前最高的版本。2、虚拟主机有对应的mysql数据库信息。3、zblog的一键安装包。https://update.z...