Vue实现导航栏吸顶效果

简介: Vue实现导航栏吸顶效果
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Vue实现导航栏吸顶效果</title>
  </head>
  <body>
    <script src="static/js/vue.js"></script>

    <style>
      body {
        margin: 0;
      }

      /* 背景 */
      #app {
        height: 2000px;
        margin: 0 auto;
        background-color: #eeeeee;
      }

      /* 导航 */
      .nav {
        width: 100%;
        height: 30px;
        background-color: #666666;
      }

      /* 固定导航 */
      .fix-nav {
        position: fixed;
        top: 0;
        z-index: 999;
      }
    </style>

    <div id="app">
      <div id="nav" class="nav" :class="{'fix-nav': navBarFixed}"></div>
    </div>

    <script>
      const app = new Vue({
        el: "#app",

        data() {
          return {
            navBarFixed: false,
          };
        },

        mounted() {
          // 事件监听滚动条
          window.addEventListener("scroll", this.watchScroll);
        },

        destroyed() {
          // 移除事件监听
          window.removeEventListener("scroll", this.watchScroll);
        },

        methods: {
          watchScroll() {
            // 滚动的距离
            var scrollTop =
              window.pageYOffset ||
              document.documentElement.scrollTop ||
              document.body.scrollTop;

            // 容器的高度
            var offsetTop = document.querySelector("#nav").offsetHeight;

            console.log("scrollTop=>", scrollTop, "  offsetTop=>", offsetTop);

            //  滚动的距离如果大于了元素到顶部的距离时,实现吸顶效果
            if (scrollTop > offsetTop) {
              this.navBarFixed = true;
            } else {
              this.navBarFixed = false;
            }
          },
        },
      });
    </script>
  </body>
</html>

参考

Vue 事件监听实现导航栏吸顶效果(页面滚动后定位)

            </div>
目录
相关文章
|
机器学习/深度学习 算法 数据可视化
无监督学习的集成方法:相似性矩阵的聚类
在机器学习中,术语Ensemble指的是并行组合多个模型,这个想法是利用群体的智慧,在给出的最终答案上形成更好的共识。
346 0
|
存储 NoSQL Java
Spring Session分布式会话管理
Spring Session分布式会话管理
370 0
|
算法 调度 Python
探索操作系统核心:一个简单的进程调度模拟器
【8月更文挑战第31天】在这篇文章中,我们将通过构建一个简单的进程调度模拟器来揭开操作系统调度算法的神秘面纱。通过模拟FIFO(先进先出)、RR(轮转)和优先级调度算法,我们将理解它们如何影响系统性能。文章将使用Python代码示例来展示这些概念,旨在让读者通过动手实践获得深刻的认识,而不仅仅是理论学习。
|
人工智能 自然语言处理 数据可视化
CRM系统品牌深度盘点:企业数字化转型的加速器
在数字化浪潮的推动下,企业对客户关系管理(CRM)系统的需求日益增长。本文深度盘点了销售易、神州云动、简道云、悟空CRM和金蝶云之家等品牌,从品牌介绍、产品功能、优势特色到适用企业,全方位解读这些数字化管理工具,助您选择最适合企业需求的CRM解决方案。
|
存储 算法 安全
Qt5 和 OpenCV4 计算机视觉项目:1~5(3)
Qt5 和 OpenCV4 计算机视觉项目:1~5(3)
223 0
|
弹性计算 Java 芯片
阿里云张伟分享 | 软件跨架构迁移(x86-&gt;ARM)的原理及实践
2023年8月31日,系列课程第四节《软件跨架构迁移(X86 -&gt; ARM)的原理及实践》正式上线,由阿里云弹性计算架构师主讲,内容涵盖:ARM与x86架构的差异分析;软件跨架构迁移的原理;软件迁移策略制定、环境准备、执行、测试优化及持续部署与维护等;以及软件迁移的全流程解读。
阿里云张伟分享 | 软件跨架构迁移(x86-&gt;ARM)的原理及实践
Echarts实战案例代码(41):自定义map背景图片
Echarts实战案例代码(41):自定义map背景图片
1493 0
|
MySQL 关系型数据库 数据安全/隐私保护