Решения, представленные выше, работают для очень простого макета без границ, полей и/или отступов. Для этого подойдет множество решений, которые вы найдете в сети.
Однако почти все решения полностью разваливаются, если вы просто добавляете границы, поля и/или отступы к любому или ко всем вашим элементам Div.
Flex Boxes (CSS display:flex;) невероятно эффективны для этого, и они отлично работают с любой комбинацией границ, полей и/или отступов.
Они могут разделить ваше экранное пространство на столько Div, сколько вам нужно, используя фиксированный размер, размер в процентах или «все, что осталось» для каждого внутреннего Div. Они могут быть в любом порядке, поэтому вы не ограничены только верхними и/или нижними колонтитулами. Их также можно использовать горизонтально, а не вертикально, а можно рядом.
Таким образом, у вас может быть, скажем, заголовок фиксированного размера, нижний колонтитул размером 20% и клиентская область «все, что осталось» между ними, размер которой изменяется динамически. Внутри этой клиентской области, в свою очередь, вы можете иметь, скажем, полосу меню процентной ширины на левом краю клиентской области, вертикальный разделитель фиксированной ширины рядом с ней и клиентскую область, которая занимает «все, что осталось». справа от этого.
Вот Fiddle, чтобы продемонстрировать все это. Соответствующий CSS удивительно прост. Демонстрация CSS Flex Box (display:flex;) с границами/полями/отступами
Например, вот два класса CSS, которые создают контейнеры, которые будут перемещать содержащиеся в них элементы Div горизонтально или вертикально соответственно:
.HorFlexContainer {
display: flex;
flex-direction: row;
flex-wrap: wrap;
flex: 1; /* this essentially means "use all parent's inner width */
}
.VertFlexContainer {
display: flex;
flex-direction: column;
flex-wrap: wrap;
flex: 1; /* this essentially means "use all parent's inner height */
}
Однако Fiddle выше действительно показывает все это.
Для справки см. эту прекрасную статью Криса Койера: Flexbox Tutorial
Надеюсь, это все поможет!
person
BRebey
schedule
13.04.2016