Хотя есть простое решение для этого с помощью javascript, я надеюсь найти решение только для CSS (скорее всего, с использованием CSS3, расположение Flexbox).Решение только для CSS-раскладки (flexbox?)
Если родительский ящик (или экран) достаточно широк, я хочу иметь следующую структуру:
|<- 100% width ->|
+------------------+--------------------------------+------------------+------------------+
| P1 - fixed width | P2 - min width, grow as needed | P3 - fixed width | P4 - width width |
+------------------+--------------------------------+------------------+------------------+
Однако при наличии ширина меньше, чем P1 + P2 + P3 + P4, то макет должен изменить в
|<- 100% width ->|
+------------------+--------------------------------+------------------+
| P1 - grow to 100% width |
+------------------+--------------------------------+------------------+
| P2 - min width, grow as needed | P3 - fixed width | P4 - width width |
+------------------+--------------------------------+------------------+
ради аргумента, давайте предположим, что родитель всегда будет по крайней мере P2 + P3 + P3 шириной.
Я думал о том, чтобы положить четыре коробки в родительский элемент flex, установив flex-grow
в 0 для детей с фиксированной шириной и до 1 для P2. Затем я добавил их в обратном порядке и установил flex-flow: row-reverse wrap-reverse
. Это подтолкнуло бы P1 на отдельную строку, если пространства недостаточно, но как я могу увеличить его до 100%?
Мне бы очень хотелось бы избежать javascript здесь, но при необходимости я сделаю это как последнее средство.
ли родительская коробку имеет фиксированный максимум ширину, чтобы начать с, или мы имеем дело с полноэкранной шириной? – chdltest
@chdtest Ширина родительского ящика устанавливается как 'calc (100% - 20px)', поэтому зависит от ширины экрана. –
Вы не ищете что-то вроде этого, верно? http://jsfiddle.net/6y5hn/7/ – chdltest