js实现带有动画的返回顶部


Posted in Javascript onAugust 09, 2020

本文实例为大家分享了js实现带有动画返回顶部的具体代码,供大家参考,具体内容如下

1、滑动鼠标往下滑动,侧边栏跟着往上移动,当到达某一个位置的时候,侧边栏停止移动;鼠标往上,则侧边栏往下-停止

js实现带有动画的返回顶部

2、当鼠标继续下滑到某一个位置,“返回顶部”几个字会弹出此处如果点击“返回顶部”,则立刻到了顶部

js实现带有动画的返回顶部

3、到达顶部位置效果

js实现带有动画的返回顶部

4、源代码

<!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;
      padding: 0;
    }

    /* 版心 */
    .w {
      width: 980px;
      margin: 0 auto;
    }

    /* 头部样式 */
    .head {
      height: 200px;
      background-color: teal;
    }

    /* 内容区域样式 */
    .banner {
      height: 450px;
      background-color: red
    }

    /* sidebar是侧边栏 */
    .sidebar {
      position: absolute;
      top: 300px;
      right: 250px;
      display: inline-block;
      width: 40px;
      height: 80px;
      background-color: cyan;
      text-align: center;
    }

    /* 侧边栏 “返回顶部”字体 */
    .sidebar span {
      display: none;
      font-size: 14px;
      cursor: pointer;
    }

    /* 主体div样式 */
    .zhuti {
      height: 300px;
      background-color: violet;
    }

    /* 底部样式 */
    .footer {
      height: 700px;
      background-color: yellow;
    }
  </style>
</head>

<body>
  <div class="sidebar">广告<br><br>
    <span id="returns">返回顶部</span>
  </div>
  <div class="head w">头部区域</div>
  <div class="banner w">banner区域</div>
  <div class="zhuti w">主体区域</div>
  <div class="footer w">尾部区域</div>

  <script>
    // Js代码部分
    var sidebar = document.querySelector('.sidebar')
    var banner = document.querySelector('.banner')
    var bannerTop = banner.offsetTop;

    // 获取 主体 区域的事件源
    var zhuti = document.querySelector('.zhuti');
    var span = document.querySelector('span');
    var zhutiTop = zhuti.offsetTop;
    // console.log(bannerTop) // 200 
    // banner.offestTop 就是被卷去头部的大小 一定要写到滚动的外面
    // 当我们侧边栏固定定位之后应该变化的数值
    var sidebarTop = sidebar.offsetTop - bannerTop;
    document.addEventListener('scroll', function () {
      // console.log(window.pageYOffset)
      if (window.pageYOffset >= bannerTop) {
        sidebar.style.position = 'fixed';
        sidebar.style.top = sidebarTop + 'px';
      } else {
        sidebar.style.position = 'absolute';
        sidebar.style.top = 300 + 'px';
      }

      // 当到底主题区域的时候,显示span的内容
      if (window.pageYOffset >= zhutiTop) {
        span.style.display = 'block';
      } else {
        span.style.display = 'none';
      }
    })
    // 封装了一个动画js文件
    function animation(obj, target, fn1) {
      // console.log(fn1);
      // fn是一个回调函数,在定时器结束的时候添加
      // 每次开定时器之前先清除掉定时器
      clearInterval(obj.timer);
      obj.timer = setInterval(function () {
        // 步长计算公式  越来越小
        // 步长取整
        var step = (target - obj.pageYOffset) / 10;
        step = step > 0 ? Math.ceil(step) : Math.floor(step);
        if (obj.pageYOffset == target) {
          clearInterval(obj.timer);
          // 如果fn1存在,调用fn
          if (fn1) {
            fn1();
          }
        } else {
          // 每30毫秒就将新的值给obj.left
          window.scroll(0, obj.pageYOffset + step);
        }
      }, 30)
    }

    // 获取返回顶部的事件 点击触发
    var returns = document.querySelector('#returns');
    returns.addEventListener('click', function () {
      // alert(111);
      // window.scroll(x,y) 可以返回顶部
      // window.scroll(0,0);
      animation(window, 0)
    })
  </script>
</body>

</html>

5、喜欢记得点击,关注,收藏噢,不喜勿喷~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
索趣科技的答案
Feb 07 Javascript
javascript中日期转换成时间戳的小例子
Mar 21 Javascript
javascript 得到文件后缀名的思路及实现
May 09 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
Nov 07 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
javascript判断变量是否有值的方法
Apr 20 Javascript
基于javascript实现图片切换效果
Apr 17 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
Nov 30 Javascript
微信小程序实现展示评分结果功能
Feb 15 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
May 16 Javascript
Vue-Cli项目优化操作的实现
Oct 27 Javascript
vue实现数据控制视图的原理解析
Jan 07 Javascript
Vue将props值实时传递 并可修改的操作
Aug 09 #Javascript
js实现轮播图效果 纯js实现图片自动切换
Aug 09 #Javascript
vue 子组件watch监听不到prop的解决
Aug 09 #Javascript
vue 重塑数组之修改数组指定index的值操作
Aug 09 #Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
Aug 09 #Javascript
bootstrap实现tab选项卡切换
Aug 09 #Javascript
vue动画—通过钩子函数实现半场动画操作
Aug 09 #Javascript
You might like
php checkbox 取值详细说明
2010/08/19 PHP
php读取excel文件的简单实例
2013/08/26 PHP
php定时计划任务与fsockopen持续进程实例
2014/05/23 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
Yii2框架自定义验证规则操作示例
2019/02/08 PHP
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
半个小时学json(json传递示例)
2016/12/25 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
javaScript 连接打印机,打印小票的实例
2017/12/29 Javascript
详解ES6通过WeakMap解决内存泄漏问题
2018/03/09 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
Element Cascader 级联选择器的使用示例
2020/07/27 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
实例讲解Python中函数的调用与定义
2016/03/14 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
使用Python在Windows下获取USB PID&amp;VID的方法
2019/07/02 Python
Python3.6+selenium2.53.6自动化测试_读取excel文件的方法
2019/09/06 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
2020/04/14 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
工商管理本科毕业生求职信范文
2013/10/05 职场文书
致200米运动员广播稿
2014/02/06 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
学校校庆演讲稿
2014/05/22 职场文书
营业用房租赁协议书
2014/11/26 职场文书
2016年大学生社区服务活动总结
2016/04/06 职场文书
Vue详细的入门笔记
2021/05/10 Vue.js
解决Tkinter中button按钮未按却主动执行command函数的问题
2021/05/23 Python