HTML\CSSСвойство display:table

Табличные элементы похожи на блочные за исключением ширины по умолчанию (зависит от содержания). display:table задает элементу тип таблицы, особенности таких элементов:

  1. Можно задавать ширину, высоту, рамки, отступы;
  2. По умолчанию ширина зависит от содержания;
  3. Переносы строки до и после элемента.

display:table-row — элемент ведет себя как <tr>, является контейнером для ячеек и практически не имеет собственного отображения.

display:table-cell — элемент ведет себя как <td>,
можно задавать отступы между ячейками или режим схлопывания границ.

Читать далее...

HTML\CSSСвойство display:inline-block

Иногда возникает необходимость расположить в ряд несколько элементов с заданными размерами. Строчные элементы для этого не подходят, т.к. не воспринимают размеры. Блочные элементы тоже не подходят, т.к. до и после них существует перенос строки.

Особенности inline-blockов:

  1. Им можно задавать размеры, рамки и отступы, как и блочным элементам;
  2. Их ширина по умолчанию зависит от содержания, а не растягивается на всю ширину контейнера;
  3. Они не порождают принудительных переносов строк, поэтому могут располагаться на одной строке, пока помещаются в родительский контейнер;
  4. Элементы в одной строке выравниваются вертикально подобно строчным элементам (vertical-align).
Читать далее...

HTML\CSSCSS3 свойство box-sizing

Свойство box-sizing:border-box изменяет режим расчета ширины элемента так, чтобы свойство width задавало не ширину содержания, а общую ширину. Значение свойства умолчаниюcontent-box. При резиновой верстке намного удобнее задать значение border-box.

Данное свойство лучше задавать с использованием префиксов:

* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
Читать далее...

HTML\CSSШирина содержимого DIV: width:100% vs width:auto

width задает ширину содержания. Общая ширина блока затем складывается из трёх компонентов: ширины содержания, внутренних отступов и ширины рамок слева и справа.

По-умолчанию, при width:auto блок занимает всю ширину родительского блока. При увеличении внутренних отступов ширина содержимого автоматически уменьшается, а общая ширина остается равной ширине родителя.

При width:100% ширина содержимого блока равна ширине родительского блока. При увеличении внутренних отступов или рамки, общая ширина становится больше ширины родителя!

Для удобства ширину лучше задавать внешнему элементу (т.к. все вложенные будут той же ширины), а высоту самому глубокому, т.к. он растянет по высоте всех своих родителей.

<div class="block1">
    <div class="block2"></div>
</div>
.block1 { width: 500px; }
.block2 { height: 300px; }
Читать далее...