Я пытаюсь создать макет страницы, подобный тому, что показано ниже (только CSS с поддержкой Chrome, Firefox, IE8+)
Примечание: столбцы 1,2,3 могут динамически увеличиваться (например, добавлять разметку из xhr и т.д.), И все они должны быть одинаковой высоты (высота наибольшего столбца). Кроме того, ячейка 4 также может расти, хотя должна быть только высотой ее внутреннего содержимого.
_______________
| |_____4_____|
| | | |
| 1 | 2 | 3 |
| | | |
|___|_______|___|
У меня проблема с этим кросс-браузером.
Моя попытка. Я создал упрощенный пример jsfiddle, чтобы показать свою попытку с использованием таблиц (используя rowspan/colspan), чтобы получить желаемый макет. Я предполагаю, что это по сути многомассивная компоновка css с твист...
Хотя таблицы, как правило, не должны использоваться для компоновки. Это был наименее опасный способ достижения желаемого результата в кросс-браузере.
Я использовал тайм-аут js для настройки высоты одного из столбцов (для имитации динамического добавления содержимого).
Проблема с моей попыткой:
В Firefox (и IE9/IE8) ячейка "4" (зеленая ячейка в jsfiddle) не будет уважать установленную высоту пикселя (высота становится больше), когда столбец 1 (красная ячейка) динамически растет. Просмотрите скрипт в Firefox, чтобы увидеть эту проблему. Почему клетка 4 растет, когда высота ячейки 1 обновляется?
Это НЕ проблема в Chrome.
Используя технику, описанную в этой статье, добавленную в комментарии выше, я смог создать работоспособное кросс-браузерное решение (CN10), которое вы можете найти - здесь
Разметка довольно проста и не требует таблиц
<div class="container">
<div class="leftCol">left col
<div class="leftColContent"></div>
</div>
<div class="header">header</div>
<div class="centerCol">center col</div>
<div class="rightCol">right col</div>
</div>
Помогло бы что-нибудь подобное?
<div class="wrapper">
<div class="red"></div>
<div class="green"></div>
<div class="blue"></div>
<div class="violet"></div>
</div>
(проверьте jsfiddle css) Конечно, он может быть улучшен, но он начинается без использования таблиц.
Я уверен, что вы можете сделать это так.
Установите двойной контейнер, и вам не нужны фиксированные значения.
<div class="container">
<div class="wrapper">
<div class="column1">
<p>Column 1</p>
</div>
<div class="wrap-right-side">
<div class="column4">
<p>Column 4</p>
</div>
<div class="right-side">
<div class="column2">
<p>Column 2</p>
</div>
<div class="column3">
<p>Column 4</p>
</div>
</div>
<!-- end right side -->
</div>
<!-- end wrap right side -->
</div>
<!-- end wrapper -->
</div>
<!-- end container -->
Это единственная проблема - это поплавок, предотвращающий полную высоту красного столбца. Поэтому вам нужно найти способ очистить поплавок.