美文网首页
回到顶部的方法

回到顶部的方法

作者: alipy_258 | 来源:发表于2020-12-30 19:15 被阅读0次

我们经常在b端网站里面,使用返回顶部的效果,很早之前,借助 jq 也可以实现;a 标签也可以实现。伴随的 c 端的到来,满足不了需求,我们就需要用 js 来实现了

以下我记录了3种方案,供大家参考
  1. a 标签
  2. scrollTo()
  3. scrollIntoView()

但是,scrollTo() 和 scrollIntoView() 方法有兼容性问题,在 safari 里,不支持 scroll-behavior:smooth,所以没有滚动效果

具体实现,如图:


image.png

大家还记得jq 是如何实现的么?

// 是不是超级简单呢
$("#top").click(function(){
    $("html,body").animate( {"scrollTop":0},300 );
});

a 标签

  • 将 a 标签放到指定元素的附近
  • 然后通过点击事件生成 a 标签
  • 触发 a 标签事件
  • 删除 a 标签

代码如下:

const backTop1 = document.getElementById('backTop1');
  backTop1.addEventListener('click', function(e) {
    let a = document.createElement('a');
    a.href = '#topAnchor'
    e.target.appendChild(a)
    a.onclick = function (e) {
      e.stopPropagation()
    }
    a.click()
    e.target.removeChild(a)
  })

不足:回到顶部,没有缓动效果,比较生硬。style 设置:html, body { scroll-behavior:smooth; }可以满足

scrollTo()

  • 计算目标元素距离顶部的距离
  • 通过事件触发

代码如下:

const backTop2 = document.getElementById('backTop2');
  const Top = document.getElementById('top');
  const y = Top.offsetTop
// offsetTop是原生 js 的方法,它获取的是你绑定元素上边框相对离自己最近且position属性为非static的祖先元素的偏移量,返回值类型是 number,不带 px 单位
  backTop2.addEventListener('click', function(e) {
    window.scrollTo({ top: y, behavior: 'smooth' })
  })

不足:对 iframe 的支持度不够,如果项目中,iframe 的占比大的话,谨慎使用

scrollIntoView()

相比第二种,这种写法更加简洁、利于维护;而且 scrollIntoView 在iframe 中表现也很优秀,被用到的频率更高

const backTop3 = document.getElementById('backTop3');
  const TOP = document.getElementById('top');
  backTop3.addEventListener('click', function(e) {
    TOP.scrollIntoView({  behavior: 'smooth'})
  })
参考文档:

https://juejin.cn/post/6906142651121139719

scrollIntoView:https://developer.mozilla.org/zh-CN/docs/Web/API/Element/scrollIntoView
offsetTop 以及相关属性详解:https://blog.csdn.net/zh_rey/article/details/78967174

相关文章

  • 回到顶部的方法

    我们经常在b端网站里面,使用返回顶部的效果,很早之前,借助 jq 也可以实现;a 标签也可以实现。伴随的 c 端的...

  • js实现跳转页面指定位置的几种方法

    一.scrollBy()实现回到顶部 二.scrollTop()方法实现滚动到顶部 三.window.locati...

  • 回到顶部及懒加载的实现

    1回到顶部 回到顶部这一功能在很多网站上都有应用,最简单的方法莫过于是锚链接,但是由于锚链接回到顶部的时候速度太快...

  • 网页回到顶部实现方法

    js获取页面元素距离浏览器工作区顶端的距离 网页被卷起来的高度/宽度(即浏览器滚动条滚动后隐藏的页面内容高度) (...

  • 回到顶部的几种实现方法

    【1】使用默认链接锚点 添加一个a链接,设置a链接的href属性值为"#top"即可实现 【2】href指向特定的...

  • js 返回页面顶部(动画)

    js 返回到页面顶部,含有渐变或者动画效果 点击返回顶部按钮,页面逐渐向上回到顶部: js 返回到页面顶部,直接返...

  • 返回顶部的几种方法

    有时候网页太长,我们想要回到网页顶部很麻烦。 这时候我们需要一个返回顶部的效果。 要实现返回顶部,有很多方法。 1...

  • 2017/2/25

    h标签属性 align 居中 标签 注:center不能写成centre 回到顶部方法:

  • TableView、CollectionView回到顶部全解

    方法一 滚动到区域 方法二 设置偏移量 方法三 滚动到指定的cell,无sectionHeader 回到顶部 ta...

  • 点击UIStatusBar UIScrollView/UITab

    点击UIStatusBar UIScrollView/UITableView等不回到顶部问题解决方法 UIScro...

网友评论

      本文标题:回到顶部的方法

      本文链接:https://www.haomeiwen.com/subject/rdzngktx.html