Я пытаюсь создать следующую структуру 2-колонки в моей веб-странице:Layout 2 переменной высоты столбцов
+-------+---+
| | |
| | |
| A | B |
| | |
| | |
| | |
| +---+
| | |
| | C |
| | |
+-------+---+
Со следующими характеристиками:
- Оба левые и правые столбцы имеют фиксированную ширину.
- Содержание C фиксировано, поэтому C имеет фиксированную высоту.
- Количество контента в A и B может варьироваться (конечный пользователь предоставляет это), и поэтому минимальная высота для A и B может меняться.
- Если для A требуется более высокая высота, чем B и C, то высота B должна быть растянута так, чтобы она продолжала касаться C, а нижняя часть C совпала с нижней стороной A.
- Если A требует меньше высоты, чем B и C, то A должен быть растянут так, чтобы нижняя часть A и C выровнялась.
- A и B имеют четкую границу и/или цвет фона, поэтому я не могу обманывать, не растягивая один из них (и C не требует растяжения).
Я попытался сделать это, представив каждую ячейку с помощью div и используя событие готовности документа jQuery, чтобы настроить ячейки на соответствующие высоты, в зависимости от того, какой столбец является самым высоким.
В большинстве случаев это работает. Однако, поскольку A содержит встроенное видео YouTube, а C содержит встроенный раздел Google Maps, происходит много динамического изменения контента, и это иногда заставляет мой код javascript работать с неправильными значениями высоты и испортить процесс компоновки ,
Кроме того, он выглядит довольно уродливым, когда вы видите, что контентные ячейки растягиваются до их правильной высоты, хотя я мог бы жить с этим, если бы он работал последовательно.
В качестве альтернативы я попытался использовать таблицу для этого макета, поскольку они имеют встроенное поведение «держать все столбцы одинаково высоки».
Проблема с этим подходом заключается в том, что я должен использовать «td rowspan = 2» для A, и как только я это сделаю, IE и Chrome игнорируют любую фиксированную высоту, которую я указываю на C, но вместо этого делают C слишком высокой.
Так что в основном я полностью зациклен на том, как реализовать этот (казалось бы, простой) макет. Может кто-то указать мне верное направление?
Я нацелен на Chrome, FireFox и IE7 +, но в IE7 и IE8 приемлема приемлемая аппроксимация желаемого макета.
Пожалуйста, разместите код, который вы пробовали. – j08691
flexbox, если вы отбрасываете поддержку IE (поддержка IE не заслуживает) ;-) – bwoebi