![](/img/trans.png)
[英]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.