Как расположить элементы по горизонтали, используя css

В этом посте я хочу показать, как можно расположить по горизонтали определенное число элементов внутри контейнера родителя, используя css. Решение заключается в использовании псевдокласса CSS :first-child.

На изображение ниже вы можете увидеть расположенные по горизонтали элементы:
расположенные по горизонтали элементы
Этот HTML код вы можете использовать, чтобы определить структуру вашего документа:

HTML

<div class="section"></div>
<div class="section"></div>
<div class="section"></div>

 

Чтобы расположить три элементы по горизонтали, внутри охватывающего (wrapper) блока, необходимо несколько строчек кода. На первый взгляд, решение могло бы состоять в том, чтобы определить класс (.section), ширину (width) и margin-right (правое поле), с определенными параметрами, и назначить их каждому блоку div внутри охватывающего блока. Проблема в том, что правое поле крайнего блока (div) выйдет за пределы охватывающего блока.
лишнее правое поле
Проблема в том, что браузеры отобразят страницу следующим образом:
третий элемент сместился вниз
Последний блок div расположился под другими блоками. Вопрос: как удалить выступающее правое поле (margin-right) последнего элемента без использования различных css классов с объявлением margin-right:0;.




Решение

Как я уже говорил в начале статьи, решением будет использовать псевдокласс :first-child и создать промежутки между элементами, используя левой поле (margin-left). Селектор :first-child позволяет явно указать на первый прямой потомок элемента родителя. Как вы догадались, это поможет нам легко удалить левой поле.
лишнее левое поле
Назначьте охватывающий блок, используя следующий css код:

CSS

#wrapper{
    width:320px;
    height:60px;
    background:#EFEFEF;
}

 

Назначьте стили для каждого блока внутри основного.

CSS

.section{
border:solid 1px #999;
float:left;
height:58px;
margin-left:10px;
width:98px;
}

 

Для примера, я использовал фиксированные значения ширины (width) и правого поля (margin-right), однако, вы можете использовать относительные значения. Удалите левое поле, добавив следующий css код:

CSS

#wrapper div:first-child {margin-left:0px;}

 

Браузеры интерпретируют предыдущую строчку так: первому div элементу, заключенному в элемент с id=wrapper, установить margin-left 0. И как результат:
удаляем лишнее левое поле
Примечание. IE6 не поддерживает псевдокласс :first-child. Вы можете использовать условные комментарии, чтобы определить специфичный CSS файл для IE6 и добавить новый класс (например .section-first) с теми же свойствами, что и у класса .section, но свойству .margin-left установите значение 0.
Источник



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.