当前位置: 首页 > article >正文

html 实现返回顶部动画

返回顶部动画

效果图

点击顶部按钮,回到顶部动画效果
在这里插入图片描述

实现

使用window.scroll()实现滚动,
window.scroll(x,y),其中x代表着X轴滚动多少像素,y代表着Y轴滚动多少像素。

代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
        }
        .box{
            height: 300px;
            width: 100%;
            background-color: rgb(74, 113, 147);
            margin-bottom: 20px;
        }
        #back-btn{
            position: fixed;
            bottom: 20px;
            right: 20px;
            background-color: aliceblue;
            border-radius: 20px;
            padding: 10px;
        }
    </style>
</head>
<body>
    <div class="box">1</div>
    <div class="box">2</div>
    <div class="box">3</div>
    <div class="box">4</div>
    <div class="box">5</div>
    <div id="back-btn">返回顶部</div>
    <script>
    // 返回顶部按钮事件
    let backBtn = document.getElementById('back-btn')
    backBtn.addEventListener('click',()=>{
        scrollAnimate()
    })
    let isScolling = false//滚动中
    let scrollTime = 100//间隔多久滚动一次
    // 变速滚动
    function scrollAnimate(callBack){
		// 防止反复点击按钮
        if(isScolling){
            return
        }
        // 获取滚动次数
        let scrollY = window.pageYOffset
        let step = Math.floor(scrollY/10)
        timer = setInterval(() => {
        scrollY = window.pageYOffset
        // 获取当前滚动的值
        if(scrollY<10){
            // 结束滚动
            window.scroll(0,0)
            // 清除定时器
            timer&& clearInterval(timer)
            timer = null
            //调用回调函数
            callBack&&callBack()
        }else{
            window.scroll(0,scrollY-step)
            step = step + 30
        }
        }, scrollTime);
    }
    </script>
</body>
</html>

http://www.kler.cn/news/355108.html

相关文章:

  • 论文阅读(十六):Deep Residual Learning for Image Recognition
  • Transformer图解以及相关的概念
  • Redis 一初识安装
  • 【机器学习基础】nn.Dropout的用法
  • ES6 Promise的用法
  • Ubuntu配置防火墙
  • ruoyi框架连接mysql+sqlserver
  • QT QML 练习8-Simple Transformations
  • MongoDB 死锁 锁定问题
  • 【C++】unordered_set、unordered_map超详细封装过程,处理底层细节
  • 算法笔记 C/C++快速入门 | 全章节整理
  • 『Mysql集群』Mysql高可用集群之主从复制 (一)
  • 【Java基础】常用类方法记录
  • Python 使用 Jarvis 算法或包装的凸包(Convex Hull using Jarvis’ Algorithm or Wrapping)
  • Unknown column ‘oMIbw5H29LXtmAUjSSm7ZrymASUI‘ in ‘where clause‘
  • 前端技巧汇总
  • 驱动总裁免登陆单文件版
  • 网页前端开发之HTML入门篇:标题标签 heading
  • Leetcode 1223 LCA of Deepest TreeNode
  • 带头结点的单链表按数据域从小到大进行选择排序的算法