2020-10-22

JavaScript 返回顶部效果

代码实现:

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style>  .slider-bar {   position: absolute;   left: 50%;   top: 300px;   margin-left: 600px;   width: 45px;   height: 130px;   background-color: pink;  }    .w {   width: 1200px;   margin: 10px auto;  }    .header {   height: 150px;   background-color: purple;  }    .banner {   height: 250px;   background-color: skyblue;  }    .main {   height: 1000px;   background-color: yellowgreen;  }    span {   display: none;   position: absolute;   bottom: 0;  }    .goBack {   cursor: pointer;  } </style></head><body> <div >  <span >返回顶部</span> </div> <div >头部区域</div> <div >banner区域</div> <div >主体部分</div> <script>  //1. 获取元素  var sliderbar = document.querySelector('.slider-bar');  var banner = document.querySelector('.banner');  // banner.offestTop 就是被卷去头部的大小 一定要写到滚动的外面  var bannerTop = banner.offsetTop   // 当我们侧边栏固定定位之后应该变化的数值  var sliderbarTop = sliderbar.offsetTop - bannerTop;  // 获取main 主体元素  var main = document.querySelector('.main');  var goBack = document.querySelector('.goBack');  var mainTop = main.offsetTop;  // 2. 页面滚动事件 scroll  document.addEventListener('scroll', function() {   // 3 .当我们页面被卷去的头部大于等于了 172 此时 侧边栏就要改为固定定位   if (window.pageYOffset >= bannerTop) {    sliderbar.style.position = 'fixed';    sliderbar.style.top = sliderbarTop + 'px';   } else {    sliderbar.style.position = 'absolute';    sliderbar.style.top = '300px';   }   // 4. 当我们页面滚动到main盒子,就显示 goback模块   if (window.pageYOffset >= mainTop) {    goBack.style.display = 'block';   } else {    goBack.style.display = 'none';   }  });  // 3. 当我们点击了返回顶部模块,就让窗口滚动的页面的最上方  goBack.addEventListener('click', function() {   // 里面的x和y 不跟单位的 直接写数字即可   // window.scroll(0, 0);   // 因为是窗口滚动 所以对象是window   animate(window, 0, 5);  });  function animate(obj, target, time, callback) {   // 先清除以前的定时器,只保留当前的一个定时器执行   clearInterval(obj.timer);   obj.timer = setInterval(function() {    // 步长值写到定时器的里面,并设置为整数    var step = (target - window.pageYOffset) / 10;    step = step > 0 ? Math.ceil(step) : Math.floor(step);    if (window.pageYOffset == target) {     clearInterval(obj.timer);     // 回调函数写到定时器结束里面     callback && callback();    }    // obj.style.left = window.pageYOffset + step + 'px';    window.scroll(0, window.pageYOffset + step);   }, time);  } </script></body></html>

原文转载:http://www.shaoqun.com/a/481478.html

hts:https://www.ikjzd.com/w/525

auditor:https://www.ikjzd.com/w/2437

e邮包:https://www.ikjzd.com/w/594.html?source=tagwish


代码实现:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">&l
鸥鹭:https://www.ikjzd.com/w/2568
agora:https://www.ikjzd.com/w/2176
珠海有火车站吗?在哪里?:http://tour.shaoqun.com/a/3655.html
大美青海:http://tour.shaoqun.com/a/86.html
卧龙大熊猫基地野生药材 :http://tour.shaoqun.com/a/15699.html

No comments:

Post a Comment