记住列表的滚动位置

移动端中,在tabs页面下的列表,如果没有一个固定的高度的话,那么手指滑动的时候,会相互影响,比如在a分类的列表滚动了一段距离,那么你切换到b列表下,会发现b分类下的列表也滑动了一段距离。

为什么列表滚动会相互影响?

因为他们并不是在自己内部滚动,而是整个body在滚动,无论你是在a频道还是在b频道,其实滚动的都是body元素

这里分享一个小技巧:如何快速找到哪个元素产生的滚动?

//把下边的代码粘贴到浏览器Console中敲回车,然后滚动界面,它会输出滚动的元素
function findScroller(element) {
    element.onscroll = function() { console.log(element)}
​
    Array.from(element.children).forEach(findScroller);
}
​
findScroller(document.body);

解决方案: 给每个列表设置独自的滚动区域  

给article-list.vue(文章列表组件)的最外层的div添加一个类样式:article-list  

<style scoped lang="less">
.article-list {
  // 百分比单位是相对于父元素的
  // height: 100%;

// 视口(在移动端是布局视口)单位:vw 和 vh,不受父元素影响
  // 1vw = 视口宽度的百分之一
  // 1vh = 视口高度的百分之一
  height: 79vh;
  overflow-y: auto;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值