Корпоративный брандмауэр блокирует изображения, поэтому я предполагаю, что вы после этого основывались на других комментариях.
EDIT: Теперь, когда я вижу, что вы после, я обновил свою скрипку соответственно. Включая приведенный ниже код для полноты.
Я бы написал функцию для вычисления размера диалогового окна, вычитал высоту фиксированного div и задал высоту динамического div для этого вычисленного значения. Затем я связал бы вызов этой функции с событием изменения размера диалогового окна. Here - это скрипка, может потребоваться некоторая настройка для вашей точной компоновки, но должна быть закрыта.
Стоит отметить, что некоторые браузеры могут неправильно вычисляться, когда они находятся в середине события прокрутки/изменения размера, что приводит к тому, что расчеты происходят после того, как событие resize завершается с помощью setTimeout, разрешает проблемы, хотя это делает при изменении размера изменяется незначительно. См. Это question и ответьте для получения более подробной информации.
function SetDivHeight() {
var $DynamicDiv = $('div.dynamic');
var $FixedDiv = $('div.fixed');
var $Container = $(window); //Update for containing element
/*Calculate the adjustment needed to account for the margin and
border of the dynamic div.*/
var HeightAdjustment = $DynamicDiv.outerHeight(true) - $DynamicDiv.height();
/*Get the values of the top and bottom margins which overlap
between the two divs.*/
var DynamicBottomMargin = parseInt($DynamicDiv.css('marginBottom'));
var FixedTopMargin = parseInt($FixedDiv.css('marginTop'));
/*Adjust for the overlapping top/bottom margin by subtracting
which ever is smaller from the adjustment value.*/
if (DynamicBottomMargin >= FixedTopMargin) {
HeightAdjustment -= FixedTopMargin;
} else {
HeightAdjustment -= DynamicBottomMargin;
}
/*subtract the height of the fixed div from the height of the
container, subtract the calculated height adjustment from that
value, and set the result as the height of the dynamic div.*/
$DynamicDiv.height(($Container.height() - $FixedDiv.outerHeight(true)) -
HeightAdjustment);
/*May need to use $Container.innerHeight instead, if container
is not a window element.*/
}
var t;
function QueueSetDivHeight() {
if (t) {
clearTimeout(t);
}
t = setTimeout(function() {
SetDivHeight();
}, 0);
}
$(document).ready(function() {
SetDivHeight();
$(window).resize(QueueSetDivHeight);
//Bind to resize of container element instead/as well
});
Это, безусловно, правильный способ сделать это. Поздравляю, что нашел. Удивительно, что никто не думал об этом. Возможно, StackOverflow больше не подходит для ответов - просто посмотрите на все бесполезные ответы, размещенные здесь ... – Timwi
И просто для удовольствия, вот скрипка http://jsfiddle.net/cPwqN/3/, у которой есть авто-размер сверху состыкованных и нижне-стыковых элементов, используя немного JavaScript для установки высоты среднего. –
С первого взгляда это работает в IE 8 и 7, но я подозреваю, что 7 начнет разваливаться по мере добавления дополнительного контента. Большая часть моей пользовательской базы по-прежнему находится на 7 (ни один из нас не переместился на 9), а ошибки 7 с позиционированием стали причиной того, что я сначала разработал, как это сделать с JavaScript/JQuery. – Rozwel