美文网首页
在基于React的网站中设置滚动

在基于React的网站中设置滚动

作者: EagleChan | 来源:发表于2016-09-21 22:14 被阅读0次

最近在利用React+Redux写网站,遇到一个页面滚动的问题。由于不想引入jQuery,也不想引入别的library去专门做这个事, 所以稍微研究了一下解决方案。

场景一 滚动到页面顶部

这个很简单,window对象有个scrollTo方法,通过这个方法即可:

scrollTo(0, 0)

场景二 滚动到页面某一位置

设置目标位置的id, 然后在a标签中指定对应的id即可

<div id="pos">滚动到这里</div>
....
<a href="#pos">点我滚动</a>

场景三 滚动到页面某一位置,再移位

当用场景二的办法时,目标位置会处于页面的顶端。但是现在很多网站是在页面最上方有个导航栏的。这样子, 目标位置会被导航栏遮住。所以,我们不是要让目标位置滚动到页面顶端,而是要滚动到顶端后再往下移动一点。
这个时候,应该结合以上两个技术,通过scrollTop获取滚动条位置,然后作简单偏移处理。

//假设导航栏高50
function handleScroll() {
  // 点击a之后, 先让浏览器滚动好,然后再作这个偏移,所以需要setTimeout
  setTimeout(function() {
   var top = window.document.scrollTop;
   scrollTo(0, top - 50);
  }, 100);
}

同时, a的设置为

<a href="#pos" onClick="handleScroll()">点我滚动</a>

补充:
为了兼容各种浏览器, 取scrollTop得方法应该为:

var top = document.body.scrollTop || document.documentElement.scrollTop || window.pageYOffset;

相关文章

网友评论

      本文标题:在基于React的网站中设置滚动

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