В CSS элементы, как правило, рассматриваются как прямоугольные блоки или полосы. Для описания блоков используются следующие – вам уже, наверное, известные – свойства:
• width
– ширина элемента
• height
– высота элемента
• left
– отступ слева
• right
– отступ справа
• top
– отступ сверху
• bottom
– отступ снизу
• margin
– внешний отступ
• border
– рамка вокруг элемента
• padding
– внутренний отступ, т.е. отступ от рамки до содержимого элемента
Эти свойства уже были представлены.
Общая ширина элемента складывается из ширины отдельных значений. (То же самое относится к высоте).
Пример:
div#box { width: 100px; padding: 20px; /* по 20 пикселей слева и справа / border: 2px solid; / по 2 пикселя слева и справа / margin: 0 30px; / по 30 пикселей слева и справа */ }
Какая ширина у этой области div
? Давайте рассмотрим каждое значение:
• 100 пикселей
• 2 раза по 20 пикселей
• 2 раза по 2 пикселя
• 2 раза по 30 пикселей
Это дает общую ширину элемента в 204 пикселя.
Ширина и высота элементов определяются с помощью width
и height
. Если эти значения не указаны явно в таблице стилей, действует следующее:
• Если отсутствует width
, то блок будет шириной, равной окружающему его элементу.
• Если отсутствует height
, то элемент будет высотой, равной его содержимому.
Пример:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> div#box { border: 1px solid; /* по 2 пикселя слева и справа */ margin: 0 30px; /* по 30 пикселей слева и справа */ background-color:#6600CC; } </style> </head> <body> <div id="box">PSD-Tutorials.de</div> </body> </html>
В браузере это будет выглядеть следующим образом:
Родительским элементом элемента div
является элемент body
. Следовательно, элемент будет отображаться на ширину элемента body
. Если говорить о высоте, то она определяется содержимым.
Всё на ноль
У каждого браузера есть встроенная таблица стилей. В них определены некоторые стандартные значения. Это касается, например, padding
и margin
. К сожалению, эти стандартные значения различаются в разных браузерах. Этот аспект затрудняет достижение идентичных результатов в различных браузерах, в том числе в контексте модели блока. Поэтому рекомендуется установить нулевые отступы, заданные браузерами. Это можно сделать следующим образом:
* { padding: 0; margin: 0; }
Добавьте эту строку в начало вашей таблицы стилей. Теперь вы можете начинать размещать блоки по вашему усмотрению.
Типы блоков
Как конкретный элемент отображается и как он влияет на другие элементы зависит от типа элемента. Фактически спецификация CSS различает между блочными элементами и строчными элементами. (Есть еще другие типы, которые здесь опущены, поскольку они играют второстепенную роль).
Блочные элементы всегда создают новую строку. Следующие элементы также начинаются с новой строки. Типичными блочными элементами являются, например, p, div, h1, ul
и т. д. Для этих элементов действуют упомянутые ранее свойства внешний отступ, внутренний отступ, высота, ширина и граница.
<h1>Digital Painting & Matte Painting: Bildaufbau definieren</h1> <p>Modul 2 - Teil 2: Ein Bild ist immer ein Ganzes. Jedoch muss man sich immer überlegen, wo der Betrachter als Erstes hinsehen sollte.</p>
Просмотр результата в браузере показывает, что h1
и p
создают каждый свою строку.
Строчные элементы, наоборот, не создают собственного абзаца, они отображаются в обычном порядке текста. Типичными строчными элементами являются span, em, strong, img, br
и т. д. Для строчных элементов не применяются вертикальные внешние отступы и ширина и высота.
<h1><em>Digital Painting & Matte Painting</em>: Bildaufbau definieren</h1> <p>Modul 2 - Teil zwei: <strong>Ein Bild ist immer ein Ganzes</strong>. Jedoch muss man sich immer überlegen, wo der Betrachter als Erstes hinsehen sollte.</p>
И вот еще один взгляд на результат:
Теперь вы можете превратить элементы, которые по сути являются блочными, в строчные элементы.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> h1 { background-color:#00CCFF; } </style> </head> <body> <h1>Digital Painting & Matte Painting</h1> <p>Модуль 2 - Часть 2: <em>Изображение всегда целое</em>. Однако всегда нужно обдумывать, куда в первую очередь должен смотреть наблюдатель.</p> </body> </html>
Посмотрите на результат в браузере.
Цвет фона заголовка h1
сигнализирует, что элемент простирается на всю ширину. Ширина определяется родительским элементом body
.
Теперь вступает в игру свойство display
.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>PSD-Tutorials.de</title> <style> h1 { display:inline; background-color:#00CCFF; } </style> </head> <body> <h1>Digital Painting & Matte Painting</h1> <p>Модуль 2 - Часть 2: <em>Изображение всегда целое</em>. Однако всегда нужно обдумывать, куда в первую очередь должен смотреть наблюдатель.</p> </body> </html>
При использовании display: inline
ширина элемента изменяется.
Фактически ширина элемента теперь автоматически подстраивается под содержимое. Вот обзор возможных значений для свойства display:
• none
– не отображается
• block
– элемент отображается как блочный, поэтому создается новая строка.
• inline
– элемент отображается как строчный, появляется в текствовом потоке.
• inline-block
– визуально выглядит как блок, для него можно указывать высоту, ширину и внешние отступы. Однако каждый элемент остаётся в текствовом потоке. Таким образом, это комбинация блочного и строчного элемента.
• list-item
– элемент отображается как блочный. К нему также добавляется маркер списка перед элементом.
• run-in
– в зависимости от содержимого может создать или блочный, или строчный элемент.
• table
– визуально похож на элемент таблицы из HTML.
• inline-table
– похож на HTML-элемент table, но визуально строчный.
• table-row
– элемент содержит дочерние элементы, расположенные в строку, похож на HTML-элемент tr.
• table-cell
– элемент представляет собой ячейку таблицы и похож на элементы th и td в HTML.
• table-row-group
– элемент содержит группу элементов с дочерними элементами, расположенными в строку, похож на HTML-элемент tbody
.
• table-header-group
– элемент содержит группу элементов с дочерними элементами, расположенными в строку, похож на HTML-элемент thead
.
• table-footer-group
– элемент содержит группу элементов с дочерними элементами, расположенными в строку, похож на HTML-элемент tfoot
.
• table-column
– здесь описываются свойства ячеек столбца. table-column
похож на элемент col
из HTML.
• table-column-group
– этот элемент содержит группу элементов, описывающих свойства ячеек столбца. Он похож на элемент colgroup
из HTML.
• table-caption
– с его помощью определяется заголовок таблицы. Свойство похоже на элемент caption из HTML.
Фактически CSS предоставляет различные варианты отображения для различных типов элементов. Они играют ключевую роль в контексте позиционирования элементов. Больше об этом в следующих уроках.