我有一个包含消息列表的 div(这是一个聊天室应用程序)。当每条消息都添加到列表底部时,我认为我希望 div 滚动到页面底部。这有道理,对吧?那么 - 问题 #1:如何让 div 滚动到底部?
现在,下一个问题是关于可用性的。如果用户向上滚动阅读之前发布的内容怎么办?然后突然有人发了一条新消息?这意味着 jQuery 将再次向下滚动。这可能会让用户非常恼火。处理这个问题的好方法是什么?如果在添加新消息之前滚动条已经一直向下滚动,它是否应该只向下滚动?如果是这样,如何在 jQuery 中做到这一点?还是有更好用的方案?
最佳答案
可以通过window.pageYOffset
获取滚动条的位置,然后使用window.scrollTo(0, y)
滚动到某个地方。
或者您甚至可以在 jquery 中使用 $('#mydiv').scrollTop(newmsg_top)
来向下滚动到新消息。
其中 var newmsg_top = parseInt($('#mydiv li:last').offset().top);
这里 #mydiv
是包含所有消息的 div。
所以 #mydiv li:last
指向最后一条消息。
offset()
返回元素相对于文档的当前位置,您可以通过 .top
如果你想要相对于父级的相对位置,你可以使用 position()
编辑: 这里有一个 jsfiddle here .请看一看。 注意:只有在查看最后一个元素时才会下降。(用于解决可用性问题)
关于jQuery - 使用 overflow-y 滚动 div : scroll;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118105/