vue 监听滚动条 页面滚动动画

这篇具有很好参考价值的文章主要介绍了vue 监听滚动条 页面滚动动画。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

以页面底部的“回到顶部”功能为例,滚动动画的实现思路是,当点击按钮时,获取当前滚动条的位置,调用定时器函数,每个时间间隔对滚动条的位置递减,直至减小到0,清除定时器,即可回到页面顶部。

当滚动条没有离开首页的一个屏幕高度时,“回到顶部”按钮应设为不可见,可以监听当前滚动条的位置,小于一个屏幕高度时,将按钮的v-show属性设为false,大于一个屏幕高度时,则设为true

代码示例

<template>
  <div id="index">
    <div class="toTop" v-show="showTop" @click="toTop">
      <img src="../assets/img/angle-square-up.png" alt="" width="35px" />
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      showTop: false,
    };
  },
  mounted() {
    // 添加监听事件
    window.addEventListener("scroll", this.scrolling);
  },
  methods: {
  	// 监听事件
    scrolling() {
      let current =
        document.documentElement.scrollTop || document.body.scrollTop;
      let vh = window.innerHeight;
      if (current >= vh) {
        this.showTop = true;
      } else {
        this.showTop = false;
      }
    },
    // 点击事件
    toTop() {
      // 获取当前滚动条的位置
      let top = document.documentElement.scrollTop || document.body.scrollTop;
      // 滚动动画
      const timeTop = setInterval(() => {
        document.body.scrollTop =
          document.documentElement.scrollTop =
          top -=
            50;
        if (top <= 0) {
          clearInterval(timeTop);
        }
      }, 10);
    },
  },
};
</script>
<style lang="scss" scoped>
#index {
  .toTop {
    position: fixed;
    right: 20px;
    bottom: 20px;
    cursor: pointer;
    width: 35px;
    height: 35px;
    z-index: 2;
    opacity: 0.3;
  }
}
img:hover {
  opacity: 0.5;
}
</style>

获取滚动条当前位置
document.documentElement.scrollTop || document.body.scrollTop
获取屏幕高度
window.innerHeight

弄懂了这个原理之后,顶部导航条的实现就十分简单了,如果不想写滚动动画的话,在<a>标签的href属性中填入目标跳转位置的元素的id,就可以非常方便的直接跳转。

导航条如图
vue 监听滚动条 页面滚动动画
代码示例

<template>
  <div id="navigation">
    <ul class="part1">
      <li>LOGO</li>
    </ul>
    <ul class="part2">
      <!-- href="/" 跳转到首页 -->
      <li><a href="/">HOME</a></li>
      <!-- href="/#about" 跳转到首页的id为about的元素位置 -->
      <li><a href="/#about">ABOUT</a></li>
      <li><a href="/#paper">PAPER</a></li>
      <li><a href="/#team">TEAM</a></li>
    </ul>
  </div>
</template>

<style lang="scss" scoped>
#navigation {
  width: 94vw;
  height: 60px;
  margin: 0 auto;
  // 弹性布局
  display: flex;
  justify-content: space-between;
  align-items: center;
  .part2 {
    // 弹性布局
    display: flex;
    justify-content: center;
    align-items: center;
  }
  li {
    width: 100px;
    height: 40px;
    line-height: 40px;
    font-weight: bold;

    a:link {
      color: #8e9eab;
    }
    a:visited {
      color: #8e9eab;
    }
    a:hover {
      color: #4f4f4f;
    }
    a:active {
      color: #4f4f4f;
    }
  }
}
</style>

插个题外话,如何优雅地修改<a>标签的默认样式
主要是设置 a:link a:visited a:hover a:active 这几个css属性

修改前
vue 监听滚动条 页面滚动动画
修改后
vue 监听滚动条 页面滚动动画
附上代码

a {
	// 清除默认下划线
    text-decoration: none;
}

// 超链接初始样式
a:link {
    color: #8e9eab;
}

// 超链接被访问后的样式
a:visited {
    color: #8e9eab;
}

// 鼠标悬停时的样式
a:hover {
    color: #4f4f4f;
}

// 点击超链接时的样式
a:active {
    color: #8e9eab;
}

ps:
a:hover 必须在 a:link 和 a:visited 之后
a:active 必须在 a:hover 之后文章来源地址https://www.toymoban.com/news/detail-464217.html

到了这里,关于vue 监听滚动条 页面滚动动画的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue 实现 dragover拖拽到页面底部时元素自动向下滚动

    公司要求做一个类似于企业微信的日程功能 然后呢 日程组件 需要能拖拽时间段创建 这里 我们使用 dragstart+dragend+dragover 记录被拖动位置完成的 如果没接触过 可以查看我的文章 vue记录鼠标拖拽划过位置并将划过位置变色 这里的话 其实可以在@dragover中做操作 界面上 @dragove

    2024年02月07日
    浏览(33)
  • vue3怎么监听页面的滚动

    有的时候监听的是window的滚动,有的时候是监听元素的滚动。  我们可以先创建一个hook。useScroll.js  可以传入元素实例参数elRef,如果没有传入的话就初始化为window。 在挂载完成之后判断是否传入了元素实例elRef,如果有的话就使用元素实例,监听元素的滚动。 还需修改wi

    2024年02月12日
    浏览(31)
  • vue项目实现回到顶部的两种超简单方法

    vue 中实现回到顶部的两种方式: (1)锚点方式 通过点击锚点回到指定位置: 样式: 实现效果: (2)scrollTop 通过点击事件将scrollTop重置为0,从而达到返回顶部的效果。 代码资源链接 代码地址

    2024年02月11日
    浏览(27)
  • 实现对一个元素的滚动条进行平滑滚动至顶部的动画效果

    1.elementUI中的平滑滚动至顶部的动画效果代码 2.将上面的代码简化 3.继续简化代码 使用 Element.scrollTo 方法并使用 scroll-behavior: smooth 的简化代码示例: 首先,在你的CSS样式表中加入以下代码: 这会将平滑滚动的效果应用到整个页面。 然后,使用 scrollTo 方法在JavaScript中触发滚

    2024年02月11日
    浏览(31)
  • uniapp 小程序 监听数据渲染完毕 获取高度 滚动条滚动到最底部

    nextTick : 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。 滚动条用的scroll-view标签 写一个聊天项目 实现发送消息、进入页面滚动到最底部 滚动方法pageScrollTo总是在渲染前执行 导致无法滚动到最底部 数据渲染完成获取元素

    2024年02月11日
    浏览(31)
  • 微信小程序自定义顶部导航,滚动页面顶部导航颜色渐变

    微信小程序自定义顶部导航栏,使背景图置顶;当向上滚动页面时,实现顶部导航颜色渐变 实现方法 代码如下(示例): 提示:由于不同的手机机型顶部导航高度不一样,所有要获取手机的信息 总共三步: 1、初始化获取顶部导航信息 2、顶部导航文字上方通过view占位,同

    2024年02月11日
    浏览(41)
  • 微信小程序 顶部搜索 吸顶 不随页面滚动而滚动

    主要用于商城类小程序: 微信小程序 搜索框 顶部吸顶 顶部购物车栏固定 不随页面滚动而滚动 示例: 可以看到分为三部分--头部搜索框--中间商品区域(可滚动)----底部购物车(固定底部) 头部搜索框 最大的盒子宽高100% 头部盒子需要有固定高度 flex布局 flex-flow: column; (为了中间

    2024年02月12日
    浏览(45)
  • css样式-内容固定在页面底部,不随滚动条滚动

    目录 1、内容固定在页面底部,不随着滚动条滚动 2、添加内容,简单测试是否固定  position:                 1、【relative】相对定位;2、【absolute】绝对定位;                  3、【fixed】固定定位;4、【static】默认值;5、【sticky】粘性定位。 这里设置为fixed,

    2024年02月11日
    浏览(38)
  • vue刷新页面回到首页

    记录一下,实现项目中的小需求, 刷新页面回到首页 在App.vue中添加如下代码即可 在created函数中判断当前路由地址是否在首页home,如果不在则替换为home页面

    2024年02月11日
    浏览(34)
  • vue3回到上一个路由页面

    Vue Router获取当前页面由哪个路由跳转 在Vue3的setup中如何使用this beforeRouteEnter 在这个路由方法中不能访问到组件实例this,但是可以使用next里面的vm访问到组件实例,并通过vm.$data获取组件实例上的data数据 getCurrentInstance 是vue3提供的获取组件实例的方法,可通过getCurrentInstanc

    2024年02月05日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包