[英]How can I keep the position inside a scrollable list when I add new elements to the top?
[英]How can I keep scroll position when add dom to top
当将DOM添加到父DOM的顶部时,我遇到了滚动位置的问题。 当滚动位置位于顶部时,滚动位置将自动设置为顶部(targetDOM.scrollTop == 0)。
如果滚动位置为1或更大(targetDOM.scrollTop> 0),则不会发生此问题。
如果滚动位置在顶部,我想防止滚动位置自动变为顶部。
有解决方案吗?
示例添加DOM
var i = 1;
function addDom(){
var content = document.getElementById('content');
for (j = i; j <= i + 9; j++) {
var dom = document.createElement('div');
dom.innerHTML= j;
content.appendChild(dom);
content.insertBefore(dom, content.firstChild);
}
i = j;
}
您应该保存当前滚动位置和滚动大小。 然后添加元素。 获取新的滚动条大小并将滚动条位置设置为旧位置加上(新滚动条大小减去旧滚动条大小):
var i = 1;
function addDom(){
var content = document.getElementById('content');
var curScrollPos = content.scrollTop;
var oldScroll = content.scrollHeight - content.clientHeight;
for (j = i; j <= i + 9; j++) {
var dom = document.createElement('div');
dom.innerHTML= j;
content.appendChild(dom);
content.insertBefore(dom, content.firstChild);
}
var newScroll = content.scrollHeight - content.clientHeight;
content.scrollTop = curScrollPos + (newScroll - oldScroll);
i = j;
}
在Chrome和FF上测试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.