無論內容如何,我都需要側邊欄div
和內容div
,其高度始終爲容器高度的100%。當窗口大小改變時,容器大小發生變化。我不能使用背景來僞造效果。我必須爲IE6設計,並決定使用Javascript來嘗試並提出一個跨瀏覽器的解決方案。使用Javascript將DIV高度設置爲100%導致跨瀏覽器問題
基本上,被加載頁面時,一個函數查找容器的offsetHeight
,減去報頭的offsetHeight
,並將側欄和內容div
等於結果的style.height。
由於IE6中的無限循環錯誤,我必須實現一個函數來檢查窗口是否實際調整大小。
它工作在FF(事實上,我得到了我想要的FF沒有任何JavaScript在所有的效果,但我離題...)的罰款,但在IE6內容div
實際上增加大小在每個調整事件。它的高度增加了6個像素。
編輯:我想補充一點,當增加窗口的大小時,代碼實際上工作正常,但是在減小窗口的大小時不能。
下面是小提琴的鏈接:Here
的JavaScript:
var setup = {
viewWidth: undefined,
viewHeight: undefined,
newViewWidth: undefined,
newViewHeight: undefined,
resizeTimeout: undefined,
findView: function() {
if (typeof window.innerWidth != 'undefined') {
viewWidth = window.innerWidth;
viewHeight = window.innerHeight;
}
else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
viewWidth = document.documentElement.clientWidth;
viewHeight = document.documentElement.clientHeight;
}
},
windowCheck: function() {
setup.findView();
if (setup.viewWidth != setup.newViewWidth || setup.viewHeight != setup.newViewHeight) {
setup.resizeTimeout = window.setTimeout(setup.onResize, 10);
};
},
onResize: function() {
var head = document.getElementById("viewportheader").offsetHeight;
var content = document.getElementById("container").offsetHeight;
document.getElementById("listing").style.height = content - head + 'px';
document.getElementById("viewport").style.height = content - head + 'px';
document.getElementById("tester2").innerHTML = content;
document.getElementById("tester").innerHTML = content - head;
setup.newViewWidth = document.documentElement.clientWidth;;
setup.newViewHeight = document.documentElement.clientHeight;
window.clearTimeout(setup.resizeTimeout);
}
};
function start() {
setup.onResize();
window.onresize = resize;
}
function resize() {
setup.windowCheck();
}
window.onload = start;
您不需要將'viewWidth','viewHeight'以及所有其他的設置爲undefined。他們自動設置。如果你真的想要一個默認值(在這種情況下你不需要),使用'null'。 –