Мне нужна боковая панель div
и содержимое div
с высотой, которая всегда равна 100% высоты контейнера, независимо от содержимого. Размер контейнера изменяется при изменении размера окна. Я не могу использовать фон, чтобы подделать эффект. Я должен спроектировать для IE6 и решил использовать Javascript, чтобы попытаться создать кросс-браузерное решение.
Обычно, когда страница загружается, функция находит offsetHeight
контейнера, вычитает offsetHeight
заголовка и устанавливает style.height боковой панели и содержимое div
равным результату.
Из-за ошибки бесконечного цикла в IE6 мне пришлось реализовать функцию, которая проверяет, действительно ли окно было изменено.
Он отлично работает в FF (На самом деле, я получил нужный эффект в FF без какого-либо JavaScript, но я отвлекся ...), но в IE6 содержание div
на самом деле увеличивается * на 1014 * в размер каждого события изменения размера. Высота увеличивается ровно на 6 пикселей.
Редактировать: я хотел добавить, что код на самом деле работает нормально при увеличении размера окна, но не при уменьшении размера окна.
Вот ссылка на скрипку: Здесь
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;