function findScroller(element) {
element.onscroll = function() {
console.log(element)
Array.from(element.children).forEach(findScroller)
findScroller(document.body)
解决方法:
让每个列表产生自己的滚动容器
.article-list {
height: 100%;
overflow-y: auto;
在此之前,首先了解下 事件和 属性的使用: 描述:当元素的滚动条滚动时触发的时间。
onscroll 事件的定义与触发条件
事件可以被任何元素绑定,包括 、、。 默认初始情况下,只有 对象拥有 事件的定义与触发条件。这是因为 对象包含的页面默认是当页面高度过大时自动出现滚动条,即 对象自带 属性,同时它也具备固定的 高度,所以可以触发 事件。 也就是说,只有定义了 overflow: auto|scroll; 内容超过出现滚动条、且给定了 height 的元素本身,才能定义与触发
2.通过window.scrollTo方法滚动
//scrollTo两个参数分别表示显示的x y坐标位置
//document.documentElement.scrollHeight 获取的是整个文档的高度
//滚动
element.onscroll = function() { console.log(element)}
Array.from(element.children).forEach(findScroller);
findScroller(document.body);
首先你可能会想到使用: void scrollTo(int x, int y) 方法保存 ListView y 位置,
但是实际上,ListView 并不是一个 scroll,你不信可以监听他的滚动事件,x y 参数始终是 0
所以此法不可行
    前不久做一个类似电商的h5项目,产品经理有个业务需求:用户在商品列表,点击某一条商品的时候,进入到详情页,从详情页返回的时候,需要定位到刚才点击的位置。
    其实,这个场景,基本就是
跳转按钮:<a href="#anchorName">点击跳转当前页面指定锚点</a>
设置锚点:<a name="anchorName">a标签锚点</a>、<p id="anchorName">id锚点</p>...
在做web版聊天软件时,有一个需求:如果向上拖动滚动条到顶部,就会加载更多历史记录(微信、QQ都是如此),历史记录逐条追加到顶端,这时看到的是最后的那条历史记录,但我们需要让用户看到的应该是第一条历史记录,这就需要将滚动条滚动到历史记录的第一条。
比如历史记录有3条,第一条发送时间是2017年11月24日18点30分30秒,第二条是18点25分,第三条是17点,因为聊天记录是按时间顺序排列的,顶端