我經常發現,如果我在javascript中創建或重新使用DOM節點,CSS引擎不會重新計算父容器的大小。這發生在Firefox和Chrome中。如何在JavaScript DOM更新後觸發CSS佈局重新計算?
例如,body
可能保持相同的大小,而新的內容溢出底部。如果我調整身體的窗口大小,但它不會「鎖定」到正確的大小,直到窗口大小爲,至少與body
一樣大。
有沒有辦法在Javascript中觸發完整的佈局重新計算?
我經常發現,如果我在javascript中創建或重新使用DOM節點,CSS引擎不會重新計算父容器的大小。這發生在Firefox和Chrome中。如何在JavaScript DOM更新後觸發CSS佈局重新計算?
例如,body
可能保持相同的大小,而新的內容溢出底部。如果我調整身體的窗口大小,但它不會「鎖定」到正確的大小,直到窗口大小爲,至少與body
一樣大。
有沒有辦法在Javascript中觸發完整的佈局重新計算?
您可以通過將CSS樣式設置爲無害值來觸發JavaScript重繪,例如,
document.body.style.zIndex = 1;
這不適合我 –
我可以能夠觸發通過CSS引擎:調整窗口大小使用下面的後
document.body.style.zoom = 1.0000001;
setTimeout(function(){document.body.style.zoom = 1;},50); //allow some time to flush the css buffer.
對於每一個時間:
$(window).resize(function() {
if(this.resizeTO) clearTimeout(this.resizeTO);
this.resizeTO = setTimeout(function() {
$(this).trigger('resizeEnd');
}, 500);
});
$(window).bind('resizeEnd', function() {
document.body.style.zoom = 1.0000001;
setTimeout(function(){document.body.style.zoom = 1;},50);
});
是。我傾向於把隨機className
的<html>
元素,使用:
document.documentElement.className = 'reflow_' + (new Date()).getTime();
它創建:
<html class="reflow_1483757400611">
嘗試,並通過camposat.tv
聽起來像一切從Android瀏覽器4到智能電視的測試你在造型上做錯了什麼,因爲這不應該是一個問題? – adeneo
你有這些嗎? 'html {height:100%; { body {min-height:100%;} }' –
我正在使用[this](http://peterned.home.xs4all.nl/examples/csslayout1.html)方法。 – spraff