Я попытался динамически изменить положение дочерних элементов div с stati c на абсолютное. Я думал, что это будет так просто:
function positionToRelative_doesNotWork(e){
const currentLeft = e.offsetLeft
const currentTop = e.offsetTop
console.log(`(${currentLeft},${currentTop})`)
e.style.left = currentLeft + 'px'
e.style.top = currentTop + 'px'
e.style.position = 'absolute'
}
document.querySelectorAll(selector).forEach((e)=>{
positionToRelative_doesNotWork(e)
})
Но, когда я выполняю этот код, все дочерние элементы заканчиваются в позиции (0,0). Приведенный выше console.log()
печатает только (0,0) для всех элементов.
Я решил это с помощью этого обходного пути:
function positionToRelative_works(e){
const currentLeft = e.offsetLeft
const currentTop = e.offsetTop
console.log(`(${currentLeft},${currentTop})`)
e.style.left = currentLeft + 'px'
e.style.top = currentTop + 'px'
setTimeout(()=>{
let elem = e
elem.style.position = 'absolute'
},1)
}
Я протестировал его на Firefox и Chromium для Linux, так что я думаю, что это не ошибка браузера. У вас есть пример здесь
Я не знаю, почему это работает (и почему не работает первая версия) Любые подсказки?