Vue的Scroll滚动事件触发方式

 更新时间:2022年04月23日 14:06:18   作者:Daniel·M  
这篇文章主要介绍了Vue的Scroll滚动事件触发方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Scroll滚动事件触发

切记 当你需要滚动事件触发 千万不要加 overflow-y: auto; 一旦加了 就 全是 0

例子

去掉 overflow-y: auto;

如果你需要把这个页面当做子组件引入 需要加true 因为 ···· 请看最后一张图片 如果不加true 不变成捕获事件 则无法成功引用

<template>
    <div class="totop">
        <div class="btnTop" v-if="btnFlag" @click="backTop()">
            <van-icon name="arrow-up" size="40" color="#CF9B6B" class="imga"/>
        </div>
    </div>
</template>
<script>
export default {
    name: "totop",
    data() {
        return {
            btnFlag: false,
        };
    },
    // 利用VUE写一个在控制台打印当前的scrollTop。首先,在 mounted 钩子中给window添加一个滚动滚动监听事件
    mounted() {
        window.addEventListener("scroll", this.scrollToTop,true);
        //如果你需要把这个页面当做子组件引入 需要加true 因为 ····  请看最后一张图片
    },
    destroyed() {
        window.removeEventListener("scroll", this.scrollToTop,true);
    },
    methods: {
        // 点击图片回到顶部方法,加计时器是为了过渡顺滑
        backTop() {
            let that = this;
            let timer = setInterval(() => {
                let ispeed = Math.floor(-that.scrollTop / 5);
                document.documentElement.scrollTop = document.body.scrollTop =
                        that.scrollTop + ispeed;
                if (that.scrollTop === 0) {
                    clearInterval(timer);
                }
            }, 16);
        },
        // 监听回到顶部按钮距浏览器顶部的距离,滚动的距离如果大于浏览器高度时,设置 btnFlag 为true,否则就是false
        scrollToTop() {
            let that = this;
            let scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop;
            that.scrollTop = scrollTop;
            console.log(scrollTop)
            //为了计算距离顶部的高度,当高度大于50显示回顶部图标,小于50则隐藏
            if (that.scrollTop > 50) {
                that.btnFlag = true;
            } else {
                that.btnFlag = false;
            }
        },
    },
};
</script>
<style lang="scss" scoped>
.totop {
    position: fixed;
    right: 40px;
    bottom: 60px;
    width: 50px;
    height: 50px;
    padding: 10px;
    cursor: pointer;
}
.imga {
    position: relative;
    top: -20px;
    left: 15px;
    text-align: center;
    line-height: 50px;
    border: 3px solid #CF9B6B;
    width: 50px;
    height: 50px;
    border-radius: 50%;
}
</style>

监听Scroll事件无效

1.监听的dom元素设定高度,子元素的内容要超过容器的高度

2.设定overflow为:auto/scroll,默认值为visible,无法触发

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 新手vue构建单页面应用实例代码

    新手vue构建单页面应用实例代码

    本篇文章主要介绍了新手vue构建单页面应用实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 用Vue Demi同时支持Vue2和Vue3的方法

    用Vue Demi同时支持Vue2和Vue3的方法

    这篇文章主要介绍了用Vue Demi同时支持Vue2和Vue3的方法,实际开发中,同一个API在不同的版本中可能导入的来源不一样,比如ref方法,本文结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • Vue Router中router.resolve方法使用实例

    Vue Router中router.resolve方法使用实例

    这篇文章主要给大家介绍了关于Vue Router中router.resolve方法使用的相关资料,router.resolve方法在前端路由库中用于解析路由信息,接受路径或路由对象,返回解析后的 URL、路由和位置对象,需要的朋友可以参考下
    2024-11-11
  • 详解vue-router基本使用

    详解vue-router基本使用

    本篇文章主要介绍了详解vue-router基本使用,详细的介绍了vue-router的概念和用法,有兴趣的可以了解一下。
    2017-04-04
  • vue获取dom元素注意事项

    vue获取dom元素注意事项

    这篇文章主要介绍了vue获取dom元素注意事项及vue获取dom元素的内容,需要的朋友可以参考下
    2017-12-12
  • 如何使用Vue3+Vite+TS快速搭建一套实用的脚手架

    如何使用Vue3+Vite+TS快速搭建一套实用的脚手架

    Vite是一个面向现代浏览器的一个更轻、更快的 Web 应用开发工具,下面这篇文章主要给大家介绍了关于如何使用Vue3+Vite+TS快速搭建一套实用脚手架的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • vuepress实现自定义首页的样式风格

    vuepress实现自定义首页的样式风格

    这篇文章主要介绍了vuepress实现自定义首页的样式风格,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • vue实现自定义H5视频播放器的方法步骤

    vue实现自定义H5视频播放器的方法步骤

    这篇文章主要介绍了vue实现自定义H5视频播放器的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Vite中Rollup打包的实现

    Vite中Rollup打包的实现

    Rollup是一个JavaScript模块打包器,它可以将多个小的JavaScript 模块打包成一个大的模块,本文主要介绍了Vite中Rollup打包的实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • VueX模块的具体使用(小白教程)

    VueX模块的具体使用(小白教程)

    这篇文章主要介绍了VueX模块的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论