vue项目中实现返回顶部功能

news/2024/7/19 13:33:04 标签: js, vue

我们在浏览网页的时候经常看到回到顶部这个功能,这个功能也比较简单,今天我就介绍一下这个功能如何实现。

使用scrollTop实现

首先,我来简单介绍一下原理

        1.根据网页的滚动高度,判断是否显示回到顶部功能按钮

        2.点击按钮时,触发回到顶部事件,如果要追求视觉效果的话,可以加入定时器。

下面简单介绍下代码实现

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
</head>
<style>
    #app>div{
        width: 100px;
        height: 100px;
        background: pink;
    }
    button{
        position: fixed;
        right: 100px;
        bottom:100px;
    }
</style>
<body>
    <div id="app">
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <div>1</div>
        <button @click="backTop" v-if="showBtn">回到顶部</button>
    </div>
</body>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script>
    new Vue({
        el: '#app',
        data: function () {
            return { showBtn: false }
        },
        methods: {
            // 展示回到顶部按钮
            showbtn() {
                let that = this;
                let scrollTop =
                    window.pageYOffset ||
                    document.documentElement.scrollTop ||
                    document.body.scrollTop;
                that.scrollTop = scrollTop;
                if (scrollTop > 750) {
                    this.showBtn = true;
                } else {
                    this.showBtn = false;
                }
            },
             /*回到顶部实现过程注解:
                1.获取当前页面距离顶部的距离
                2.计算出每次向上移动的距离,用负的滚动距离除以5,因为滚动的距离是一个正数,想向上移动就是一个减法
                3.用当前距离加上计算出的距离,然后赋值给当前距离,就可以达到向上移动的效果
                4.最后在移动到顶部的时候,清除定时器*/
            backTop() {
                var timer = setInterval(function () {
                    let osTop =
                        document.documentElement.scrollTop || document.body.scrollTop;
                    let ispeed = Math.floor(-osTop / 5);
                    document.documentElement.scrollTop = document.body.scrollTop =
                        osTop + ispeed;
                    this.isTop = true;
                    if (osTop === 0) {
                        clearInterval(timer);
                    }
                }, 30);
            },
        },
        mounted() {
            window.addEventListener("scroll", this.showbtn, true);
        },
    })
</script>

</html>


http://www.niftyadmin.cn/n/875620.html

相关文章

mysql proxy性能差_mysql proxy 问题 效率太差 慢 郁闷

一&#xff0c;前言装了&#xff0c;mysql proxy后感觉挺爽的&#xff0c;因为代码端就不要那边烦了。哈哈。但是实际运用时发现他慢啊&#xff0c;能明显感觉出来。郁闷二&#xff0c;测试mysql proxy的效率情况1)&#xff0c;按常规方法&#xff0c;连接数据库/** Created on…

有趣的一键复制功能

今天产品经理提到了加一个一键复制文本到剪切板的功能&#xff0c;就去搜索了下相关功能是如何实现的&#xff0c;下面来给大家上代码。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X…

mysql慢sql增加读写分离_MySQL主从同步、读写分离配置步骤

现在使用的两台服务器已经安装了MySQL,全是rpm包装的&#xff0c;能正常使用。为了避免不必要的麻烦&#xff0c;主从服务器MySQL版本尽量保持一致;环境&#xff1a;192.168.0.1 (Master)192.168.0.2 (Slave)MySQL Version:Ver 14.14 Distrib 5.1.48, for pc-linux-gnu (i686) …

vue移动端遮罩层滚动穿透问题

今天小编在做项目的时候发现了一个问题&#xff0c;各种查资料才得以解决。下面来简单介绍一下问题&#xff1a; 在页面中&#xff0c;我们需要点击按钮展示一个遮罩层&#xff0c;且遮罩层里面内容可滚动&#xff0c;但是遮罩层盖住的区域不可滚动&#xff0c;这样一个问题。…

vue项目运行后自动打开浏览器

很早就发现&#xff0c;有些项目在运行后会自动打开默认浏览器&#xff0c;但一直没想过这是什么原因。今天闲来无事看了一下&#xff0c;原来这么简单就可以实现。 打开我们项目的package.json "scripts": {"serve": "vue-cli-service serve --ope…

vue-cli项目的webpack打包优化

webpack 目录 相关知识 路由组件和其他组件异步加载 Ant Design of Vue组件库等的优化 gzip压缩 优化loadsh 图片压缩 CDN配置 代码压缩 公共代码抽离 相关知识 简单的配置方式 调整webpack最简单的方式就是在vue.config.js中的configureWebpack选项提供一个对象&…

MySQL锁未释放_MySQL 全局读锁一直没释放-爱可生

原标题&#xff1a;MySQL 全局读锁一直没释放-爱可生问题&#xff1a;在一个客户的线上监控告警中&#xff0c;提示主从延迟不断升高&#xff0c;我们登上数据库进行查看一下&#xff0c;发现 MySQL 从库复制状态提示 SQL 线程在 waiting for global read lock。在数据库的进程…

element-ui的返回顶部组件无效

今天在做项目中的时候&#xff0c;要加一个返回顶部的功能。因为项目中用到了饿了么的组件&#xff0c;所以就直接引用了Backtop这个组件。 我们在app.vue中写如下代码即可&#xff1a; <template><div id"app"><router-view /><el-backtop t…