Я не думаю, что браузер фактически будет отображать DOM во время выполнения скрипта, по крайней мере, по моему опыту.
Я всегда добавлял элемент в его окончательную позицию, измерял его, а затем скрывал.
Я никогда не замечал, чтобы это мгновенно появилось.Мне было бы интересно узнать, что думают другие.
Что-то вроде:
jQuery
var el = $('<div/>', {
html: 'hello',
css: {
padding: '10px'
}
});
var height = el.appendTo( $(document.body) ).height();
el.hide();
Обычный
var el = document.createElement( 'div' );
el.style.padding = '10px';
el.innerHTML = 'hello';
document.body.appendChild( el );
var height = el.clientHeight;
el.style.display = 'none';