Блоки в CSS. Свойства CSS- margin, padding, border.
Блоки в CSS.
В HTML все элементы можно разделить на два типа: блочные и строчные.
Блочные элементы визуально создают самостоятельную структурную единицу - блок. К ним можно отнести, например, элементы H1-H6, P, DIV. Такие элементы отделяются от других абзацными отступами.
Строчные элементы выводятся линейной строкой. К ним можно отнести, например, элементы I, B, U, S и другие.
В CSS модель документа представляется блоком. Каждый элемент в дереве элементов документа представляет собой самостоятельный блок. Причем, есть блоки, структурно отделенные от остальных, а есть строчные блоки, которые могут находиться внутри структурных блоков.
Блок имеет прямоугольную форму:
Итак, у блока есть содержимое, например, для элемента p - это текст. Вокруг содержимого есть отступы (padding), они служат для того, чтобы текст не примыкал вплотную к границе блока. Фон отступов такой же, как и у содержимого.
Затем идет граница блока (border), которая может быть как видимой, так и невидимой.
Также блок имеет поля (margin), которые задают дополнительное свободное пространство вокруг блока. Фон полей прозрачный, т.е. сквозь него просвечивает фон родительского элемента.
Размер блока, т.е. его ширина (width) и высота (height), определяются содержимым. И это надо запомнить: поля и отступы не учитываются в размере блока.
Способы задания всех этих свойств мы рассмотрим позже, а пока, чтобы стало понятнее, приведем пример. Пусть у нас есть html-страница с двумя абзацами:
Для того, чтобы увидеть отступы, поля и границы, зададим границу (пока не вдаваясь в подробности из чего она состоит):
Как мы уже знаем, отступы от границы задаются свойством padding, зададим его для параграфов:
Посмотрим на результат в браузере:
Теперь у нас есть отступы внутри блока. Задание полей отделит блоки друг от друга:
Наконец, зададим размеры блоков параграфов:
Посмотрим на результат в браузере:
Таким образом, как вы уже наверно догадались, можно располагать элементы на странице так, как нам захочется. И заметьте без всяких таблиц и обилия кода. Именно на понятиях блоков строится блочная верстка сайта.
Свойства CSS- margin, padding, border.
Сегодня мы будем учиться задавать свойства блоков. И делать это мы будем на примерах элементов div и span. div - этот элемент является контейнером для остальных. Элемент div отделяется от остальных элементов абзацными отступами. Элемент span, в отличии от div, создает строчный блок.
Посмотрим на примере, создайте html-страницу со следующим кодом:
Посмотрите на нашу страницу в браузере:
Как видите, содержимое тегов div располагается с абзацным отступом, т.е. одно под другим. На примере этой страницы мы и будем рассматривать свойства блоков.
Border (граница)
Границы в css можно задавать отдельно для каждой стороны:
- border-top - верхняя граница.
- border-right - правая граница.
- border-bottom - нижняя граница.
- border-left - левая граница.
Каждый сегмент границы может иметь свои характеристики: цвет, толщину и тип линии. Для этого к свойству границы через дефис необходимо дописать ключевые слова : color (для цвета), width (для толщины) и style (для типа линии). Например, border-top-color определяет цвет верхней границы, а border-left-style - тип линии для левой границы.
Если все четыре границы будут иметь одинаковые значения, то следует воспользоваться сокращенной записью:
- border-color - цвет всех границ.
- border-width - толщина всех границ.
- border-style - стиль всех границ.
Значениями свойства color могут быть именные цвета (red, blue и т.д.), шестнадцатеричные коды цветов (типа #FFCCFF) и десятичные коды в модели RGB (типа rgb(255, 0, 0)).
Значениями свойства width могут быть ключевые слова: thin (тонкая граница), medium (средняя граница) и thick (толстая граница). А также любая единица измерения.
Значениями свойства style могут быть следующие ключевые слова:
- none - граница отсутствует.
- dotted - граница состоит из точек.
- dashed - граница в виде пунктирной линии.
- solid - граница отображается сплошной линией.
- double - граница отображается двойной сплошной линией.
- groove - граница отображается вдавленной объемной линией.
- ridge - граница отображается выпуклой объемной линией.
- inset - граница отображается так, что весь блок выглядит вдавленным.
- outset - граница отображается так, что весь блок выглядит выпуклым.
Давайте зададим нашему первому div-у разные границы, чтобы посмотреть, как это работает:
Посмотрим на результат в браузере:
![](https://7163946256.cbaul-cdnwnd.com/690642a480ed033848d9c3362c7e5e91/200001548-44aa844aab/css18.gif)
Иногда возможность задавать стили для разных секторов границы очень выручает, но чаще требуется задать единый стиль для всех границ и тогда удобнее пользоваться сокращенной записью border, в которой через пробел указываются: толщина, тип и цвет (именно в таком порядке).
Давайте для всех элементов нашей страницы зададим один стиль границ, чтобы было удобнее разбираться с отступами и полями далее:
Сейчас, если посмотреть на нашу страницу в браузере, то мы увидим наложение границ разных элементов друг на друга. Это происходит потому, что еще не заданы поля элементов.
Margin (поля)
Как вы помните, поля задают свободное пространство вокруг элемента. Как и границы, поля в css можно определять отдельно для верхней, правой, нижней и левой сторон.
Для этого используются свойства:
- margin-top - ширина верхнего поля.
- margin-right - ширина правого поля.
- margin-bottom - ширина нижнего поля.
- margin-left - ширина левого поля.
Чаще используется сокращенная запись margin, где через пробел указываются ширина верхнего, правого, нижнего и левого полей. Причем, именно в таком порядке. Пример записи:
Если значения верхнего и нижнего полей совпадают, и значения правого и левого полей совпадают, то сокращенная запись выглядит еще короче:
В данном случае ширина верхнего и нижнего полей будет 5 пикселов, а правого и левого - по 10 пикселов.
Если же у всех полей ширина одинакова, то сокращенная запись выглядит так:
Значения полей можно задавать и в других единицах длины, и в процентах. Также величина значения может иметь отрицательное значение, что в некоторых случаях очень удобно использовать. Давайте для нашего примера зададим всем элементам одинаковую ширину полей - в 10 пикселов:
Теперь наша страница в браузере выглядит так:
Обратите внимание текст в самих элементах прижат к границам, чтобы это исправить, давайте зададим ему отступы.
Padding (отступы)
Как вы помните, отступы позволяют отделить содержимое блока от границы. Параметры отступов в css можно задать для каждой стороны отдельно, используя следующие свойства:
- padding-top - ширина верхнего отступа.
- padding-right - ширина правого отступа.
- padding-bottom - ширина нижнего отступа.
- padding-left - ширина левого отступа.
Значения свойств могут задаваться в различных единицах длины или в процентах. Проценты вычисляются относительно ширины блока. В качестве значения может выступать только положительная величина.
Как и с полями чаще удобнее использовать сокращенную запись, которая аналогична записи для полей.
Давайте зададим для элементов нашей страницы отступы: сверху и снизу - по 10 пикселов, а справа и слева - по 5 пикселов.
Теперь наша страница в браузере выглядит так:
![](https://7163946256.cbaul-cdnwnd.com/690642a480ed033848d9c3362c7e5e91/200001550-48f8648f89/css20.gif)
Давайте зададим фон нашим элементам, чтобы убедиться, что фон отступов совпадает с фоном элемента, а фон полей - прозрачный.
Теперь наша страница в браузере выглядит так:
Следует помнить, что браузер IE не включает в размер блока поля и отступы. Он отображает 3 и 4 блоки заданной ширины, а потом задает им поля и отступы, и именно на это количество пикселов наш второй блок будет шире первого. А остальные браузеры делают наоборот.
Теперь давайте зададим ширину и высоту наших блоков так, чтобы во всех браузерах было одинаково:
:
Теперь наша страница в браузерах выглядит так:
Вообще разное отображение свойства margin в разных браузерах держите в голове, так как при верстке сайта оно используется обязательно, а вот отображаться может по-разному.
Собственно мы рассмотрели все способы задания полей, отступов и границ. Надо сказать, что сегодня мы затронули основы блочной верстки сайта. Поэтому хорошенько разберитесь с полями, отступами и границами, чтобы в дальнейшем это не вызывало трудностей.