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>
目录
相关文章
|
虚拟化
安装VMware提示无法访问网络位置*:\VMware\......
安装VMware提示无法访问网络位置*:\VMware\......
1290 0
|
Python
gitlab推送企业微信几种方式汇总(一)
gitlab推送企业微信几种方式汇总(一)
5044 1
gitlab推送企业微信几种方式汇总(一)
|
XML 存储 Android开发
Android自定义控件 | 小红点的三种实现(下)
上篇介绍了两种实现小红点的方案,分别是多控件叠加和单控件绘制,其中第二个方案有一个缺点:类型绑定。导致它无法被不同类型控件所复用。这篇给出一种新的方案。
768 0
Android自定义控件 | 小红点的三种实现(下)
|
缓存 资源调度 前端开发
butterfly主题魔改日记(一)
这一篇内容是在hexo+GitHub两篇的 基础上进行魔改,这是我自己的记录,你可以直接看我推荐大佬的博客,然后进行魔改,这篇文章不常更,还望周知!!!
1287 4
|
传感器 算法 前端开发
电赛信号类经验总结-从零基础到省一不是梦(超多电赛程序、电路资料分享)
电赛信号类经验总结-从零基础到省一不是梦(超多电赛程序、电路资料分享)
2256 1
电赛信号类经验总结-从零基础到省一不是梦(超多电赛程序、电路资料分享)
|
XML 前端开发 JavaScript
如何创建一个Servlet项目(Maven)?
如何创建一个Servlet项目(Maven)?
如何创建一个Servlet项目(Maven)?
|
存储 Web App开发 前端开发
《JavaWeb篇》10.Session&Cookie看这一篇就够了(一)
《JavaWeb篇》10.Session&Cookie看这一篇就够了(一)
550 0
《JavaWeb篇》10.Session&Cookie看这一篇就够了(一)
|
机器学习/深度学习 存储 算法
PIE-engine 教程 ——随机森林监督分类案例(河北安国市为例)
PIE-engine 教程 ——随机森林监督分类案例(河北安国市为例)
887 0
PIE-engine 教程 ——随机森林监督分类案例(河北安国市为例)
|
图形学
入门3D建模基础教程详细分解
手如何学习次世代?这是我这几年被学生和同行问过最多的问题,在游戏行业技术逐步更新换代的过程中,次世代这个词被越来越多的提起来了,要回答如何学习次世代,先要跟大家解释什么是次世代。
1028 0
入门3D建模基础教程详细分解
|
安全 算法 大数据
对称加密加密原理和开发场景解析
加密是自古以来人们都在不断使用的技术,目的是为了隐藏信息,只是随着时代在不断的变化,加密也在不断的更新。从古代的藏宝图对藏宝地点进行隐藏。到二战时候,破译敌方电台,都是属于加密和破解的过程。进入21世纪后,加密在互联网时代也有了新的加密方法。也创造了密码学这个学科。目前在加密的场景下,通常分为:可逆加密和不可逆加密。而在可逆加密场景里又分为:对称加密和非对称加密。本次主要讨论集中在可逆加密上。可逆加密顾名思义就是在对明文进行加密后生成密文,能够通过解密把密文再还原成明文。数据加密一般主要解决三个问题:可信问题(非对称加密可解决),防篡改问题(不可逆加密解决),防窃听问题...
730 0