我有一个用户移动东西的应用程序。在他或她这样做之后,我想将屏幕重新定位到之前的位置以减少混乱。为此,我想自动滚动,以便在 DOM 移动之前将参考元素定位在屏幕上的同一位置。
我创建了一个代码笔来隔离和重现我的应用程序的问题:https : //codepen.io/VincentBlouin/pen/YzzMKxm
let centerTextDiv = document.getElementById('center-text');
let scrollDiv = document.getElementById('scrollable');
centerRect = centerTextDiv.getBoundingClientRect();
scrollDiv.scrollLeft = centerRect.x - (centerRect.width / 2);
scrollDiv.scrollTop = centerRect.y - (centerRect.height + 75);
let firstTextDiv = document.getElementById('first-div-text');
let firstText = firstTextDiv.textContent;
let firstChars = firstText.substr(0, 500);
let lastChars = firstText.substr(500, firstText.length);
let insertNewTextDiv = document.getElementById('insert-new-text');
setTimeout(()=>{
firstTextDiv.innerHTML = firstChars;
insertNewTextDiv.innerHTML = lastChars;
//scroll here
}, 3000);
首先参考 div 是可见的,但 3 秒后一些文本被移动并且参考 div 在屏幕上不再可见。
在我的真实应用程序中,滚动容器只是 document.scrollingElement,但我必须在代码笔中创建一个可滚动的 div。同样在我的应用程序 x,y 中,我的参考 div 的 getBoundingClientRect 在 DOM 更改之前和之后是不同的。
嗯,谢谢。我以为这很容易解决,但我感到困惑。
呼唤远方
潇湘沐
相关分类