В моем HTML есть изображение (id = «камень»), которое я прячу. Из этого изображения я позже сделал несколько копий (id = ”stone_xxx) в JS с помощью cloneNode, поместил их в DOM и удалил скрытый класс. Все работает нормально. Мне нужна ширина изначально при запуске программы (до того, как я сделаю первую копию), поэтому я беру ее из скрытого изображения (id = ”stone”). Но я всегда получаю naturalHeight (90 пикселей), а не фактическую высоту (45 пикселей).
Я даже попробовал это в консоли, чтобы исключить, что, возможно, CSS выполняется после JS, но это ничего не изменило, поэтому Мне пришлось использовать window.onload, как в Получить высоту ширины изображения javascript.
let stone = document.getElementById( "stone" );
let newStone = stone.cloneNode( false );
newStone.classList.remove( 'hidden' );
let i = 1;
newStone.id = "stone_" + i;
let el = document.getElementById( 'position_' + i);
el.prepend(newStone);
console.log(stone.naturalWidth); // => 272
console.log(stone.width); // => 272 Should be : 45
.hidden { display: none;}
.stone { width: 45px;}
<img id="stone" class="stone hidden" src=https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png />
<div id="position_1"></div>