
- •30. Модель компоновки css - боксы, границы, поля, заполнение
- •Введение
- •Изменение композиции: поля, границы и заполнение css
- •Размещение пробелов вокруг объекта: свойства margin-top, margin-right, margin-bottom, margin-left, и margin
- •Автоматические поля
- •Отрицательные поля
- •Сжатие полей
- •Пример 1
- •Начальная таблица стилей
- •Новые правила:
- •Добавление к объекту границы: свойства границ
- •Свойства border-width
- •Свойства border-style
- •Свойства border-color
- •Сокращенное свойство border и его четыре родственника, более подробно
- •Создание правил: обоснование пяти свойств сокращения border … вместо одного
- •…И зачем так много свойств? Они же просто границы, не так ли?
- •Пример 2
- •Новые правила:
- •Когда одних полей недостаточно: свойства заполнения
- •Пример 3
- •Новые правила:
- •Работа с шириной и высотой элемента
- •Основы ширины и высоты
- •Min-width, max-width, min-height, и max-height
- •Пример 4
- •Новые правила:
- •Переполнение: ограничение в контенте, или задание свободным
- •Результаты четырех значений overflow
- •Боксовые модели css: подгонка друг к другу
- •Выбор подходящих единиц измерения для компоновки
- •Основное правило задания размеров элементов: смешивайте пропорциональные и статические единицы измерения с осторожностью, или вообще не смешивайте
- •Выбор для компоновки подходящих единиц измерения: преимущества и недостатки
- •Компоненты боксовой модели
- •Боксовая модель w3c: все является аддитивным
- •Пропорциональные поля и заполнение в боксовой модели w3c
- •Работа с потоком документа
- •Типы элементов и свойство display
- •Пример 5
- •Новые правила:
- •Обтекание элементами других элементов: свойство float
- •Пример 6
- •Новые правила:
- •Размещение элементов ниже своих плавающих предшественников: свойство clear
- •Заключение
- •Дополнительное чтение
- •Контрольные вопросы
- •Об авторе
Отрицательные поля
Всем свойствам полей можно присваивать отрицательные значения. В этом случае смежное поле может быть фактически до некоторой степени "исключено". При задании достаточно большого отрицательного поля для достаточно большого элемента смежный элемент может даже перекрываться.
Например, рассмотрим следующие простые элементы div.
<div id="header"><h1>Lovely header</h1></div>
<div id="content"><p>Overlapping text is entirely unreadable</p></div>
При оформлении с помощью следующего CSS
body {background-color:white; font-family:Geneva, Arial, Helvetica, sans-serif;}
#header {background-color:yellow;}
h1 {color:red; font-size:2em; }
создается вывод, показанный на рисунке 30.2:
Рис. 30.2. Два элемента из простого примера. Ничего особенного для просмотра.
Теперь начинается интересное. Добавим достаточно значительное отрицательное поле сверху у нижнего элемента, используя следующее правило:
#content {margin-top:-3em;}
Это создает визуальный эффект смещения элемента вверх, так что он перекрывается с заголовком, как показано на рисунке 30.3.
Рис. 30.3. При применении отрицательных полей нижний элемент смещается вверх и перекрывает заголовок.
Сжатие полей
В тех случаях, когда два аналогичных и смежных блочных элемента имеют ненулевые поля, будет применяться только большее из двух полей. Например, рассмотрим следующее правило:
p {
margin: 1em auto 1.5em auto;
}
Если документ, включающий это правило стиля, выводится буквально, то получающееся поле между двумя параграфами в последовательности будет составлять 2.5em, как сумма нижнего поля параграфа 1 (1.5em) и верхнего поля параграфа 2 (1em). Однако благодаря применению сжимаемых полей, поле между ними будет только 1.5em.
Списки и заголовки являются особенными среди блочных элементов, поэтому их поля не будут сжиматься с полями других блочных элементов.
Пример 1
В лекции об оформлении текста верстка начального раздела рассказа Ф. Скотта Фитцджеральда была сделана с помощью множества инструментов, доступных в CSS. Для демонстрации в этой лекции будет снова использоваться та же самая страница с некоторыми небольшими изменениями (в основном, добавление элемента контейнера вокруг всего основного текста). Оформление текста не изменяется, но в данном примере удалены несколько использованных стилей компоновки.
Для начала будут добавлены поля ко всем элементам, где они нужны.
Начальная таблица стилей
body {
font-size: 14px;
font-family: Palatino,'Palatino Linotype',Georgia, sans-serif;
}
p {
text-align: justify;
text-indent: 1.429em;
line-height: 1.5;
}
q {
letter-spacing: .143em;
}
q:before,
q:after {
content: "";
}
h1 {
font-size: x-large;
font-family: Helvetica,Arial,sans-serif;
font-style: italic;
}
blockquote {
font-family: Helvetica,Arial,sans-serif;
}
blockquote p {
text-align: left;
text-indent: 0;
}
.sectionNote {
font-size: medium;
font-style: normal;
}
.attribution {
font-size: small;
line-height: 1.5;
}
.author {
font-weight: bold;
text-transform: uppercase;
}
.source a {
text-decoration: none;
}
.pullQuote {
word-spacing: .143em;
}
.opening {
font-variant: small-caps;
}
Листинг .
Новые границы для тела, заголовка, цитаты, контейнера документа, и параграфов