На первый взгляд,
Однако процессоры визуализации браузеров следуют длинному списку правил, изложенных в Рекомендации CSS 2.1, и некоторым своим собственным. В связи с этим имеется множество деталей, которые необходимо понимать, прежде чем добавлять в набор используемых средств стилиста более развитые методы.
В этой лекции мы познакомимся со свойствами CSS, которые управляют компоновкой элементов HTML, включая их границы, поля, и многое другое. Будут также рассмотрены некоторые упомянутые выше правила. Развитая столбцовая компоновка и сеточно-ориентированные методы будут рассмотрены в последующих лекциях, которые исследуют компоновку форм, обтекание, очистку, и позиционирование более подробно. Будет рассмотрено много связанных с лекцией примеров кода для демонстрации обсуждаемых методов.
Лекция имеет следующее содержание:
Многие элементы HTML, такие как элементы div и заголовки, изображаются по умолчанию по всей ширине холста браузера и инициируют терминальные разрывы строки, так что несколько таких элементов в последовательности будут выводиться в стеке сверху вниз на холсте документа.
Однако элементов HTML и стилей браузера, заданных обычно для них, будет недостаточно для целого диапазона вариантов использования, к рассмотрению которых обращаются разработчики в своей работе. Совместная работа CSS и HTML предназначена для "заполнения пробелов", так что классы и id могут добавлять семантическое значение к разметке, в то время как правила таблиц стилей могут изменить компоновку и представление контента — возможно даже вообще отменяя большую часть используемых по умолчанию стилей браузера.
Точное управление свободным пространством является одним из самых важных инструментов дизайнера — и по мнению автора, единственным самым важным. Однако, та степень управления свободным пространством, которая обеспечивает высокое качество дизайну сайта, отсутствует в используемых по умолчанию таблицах стиля браузера, что означает, что стилисты часто используют рассматриваемые в этой лекции поля, границы, заполнение и другие свойства компоновки CSS.
Поля (margin), границы (border), и заполнение (padding) организованы, как показано на рисунке 30.1.
(рис 30.1) Иллюстрация различных частей бокса элемента, помеченных соответствующими свойствами CSS.Поля можно определять по отдельности или в сокращенном правиле. Более того, сокращенное правило позволяет, тем не менее, управлять отдельными границами вокруг объекта. Допустимые значения обычно определяют в единицах измерения px или em (пикселях или em). В таблицах стилей, предназначенных для печати, вместо них можно использовать единицы измерения in, cm, или pt (дюймы, сантиметры или пункты).
Во всех случаях % (процент) является допустимым значением, но должен использоваться с осторожностью; такие значения вычисляются как доля от ширины элемента предка, и беззаботное использование таких значений может иметь непредвиденные последствия. Эта проблема подробнее рассматривается ниже во время обсуждения боксовой
Все строковые элементы, за исключением изображений, не имеют полей и не будут принимать значения полей. Список таких элементов представлен в таблице 30.2 ниже.
В зависимости от обстоятельств, задание значения auto говорит браузеру, что надо вывести поле согласно значению, имеющемуся в его собственной таблице стилей. Однако, когда такое поле применяется к элементу со значимой шириной, поле auto заставляет все доступное пространство выводиться как пробел.
Рассмотрим следующее правило:
.narrowWaisted {
width: 16.667em;
margin: 1em auto 1em auto;
}
… Блочный элемент класса narrowWaisted будет центрировать себя в середине доступного холста.
… Или для правого поля применяемого элемента можно задать некоторое относительное небольшое значение, в то время как левому полю присваивается значение auto.
Когда делается таким образом, этот элемент будет выглядеть почти прижатым вправо.
Всем свойствам полей можно присваивать отрицательные значения. В этом случае смежное поле может быть фактически до некоторой степени "исключено". При задании достаточно большого отрицательного поля для достаточно большого элемента смежный элемент может даже перекрываться.
Например, рассмотрим следующие простые элементы 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) При применении отрицательных полей нижний элемент смещается вверх и перекрывает заголовок.
В тех случаях, когда два аналогичных и смежных блочных элемента имеют ненулевые поля, будет применяться только большее из двух полей. Например, рассмотрим следующее правило:
p {
margin: 1em auto 1.5em auto;
}
Если документ, включающий это правило стиля, выводится буквально, то получающееся поле между двумя параграфами в последовательности будет составлять 2.5em, как сумма нижнего поля параграфа 1 (1.5em) и верхнего поля параграфа 2 (1em). Однако благодаря применению сжимаемых полей, поле между ними будет только 1.5em.
Списки и заголовки являются особенными среди блочных элементов, поэтому их поля не будут сжиматься с полями других блочных элементов.
В лекции об оформлении текста верстка начального раздела рассказа Ф. Скотта Фитцджеральда была сделана с помощью множества инструментов, доступных в 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;
}
Новые границы для тела, заголовка, цитаты, контейнера документа, и параграфов
body { margin: 0; }
#main { margin: 0 auto 0 auto; }
h1 { margin: 0 0 1em 0; }
.pullQuote { margin: auto 0 1em 1em; }
p { margin: 0; }
.attribution { margin: 0 0 1.5em 0; }
Существует сокращенное свойство границы, но оно будет полезно, только когда вы захотите предоставить полную и согласованную границу вокруг всех четырех сторон элемента. Можно также задать толщину, стиль и цвет любой из четырех возможных сторон элемента, используя любые мыслимые комбинации следующих свойств.
border-widthborder-style border-color border-topborder-top-widthborder-top-styleborder-top-colorborder-rightborder-right-widthborder-right-styleborder-right-colorborder-bottom border-bottom-width border-bottom-style border-bottom-color border-left border-left-width border-left-style border-left-color Эти свойства ведут себя точно так же, как и можно было бы ожидать: они задают явную толщину одной или нескольких сторон границы.
Сокращенное свойство border-width принимает значения в той же нотации, что и сокращенное свойство margin, за исключением того только, что значения процента не поддерживаются. Вполне можно написать правило подобное следующему:
td {
border-width: 1px 0 0 1px;
}
(рис 30.4) Восемь обычных стилей границы в действии.Свойства обычно принимают какое-либо из следующих значений:
dashed |
Длина пунктиров и величина пробела между ними определяется браузером. |
dotted |
Величина пробела между точками (которые могут быть любой формы с отношением сторон 1) определяется браузером. |
double |
Заданная толщина делится на три и изображается в порядке заполнено-отсутствие-заполнено. |
|
Изображается трехмерная вдавленная граница. |
|
Граница будет затенена, чтобы заставить ее выглядеть, как будто элемент, к которому она применяется вдавлен в холст. |
none |
Эквивалентно определению -width равной нулю. |
|
Граница будет затенена, чтобы заставить ее выглядеть, как будто элемент, к которому она применяется выдавлен из холста. |
ridge |
Изображается трехмерная выпуклая граница. |
solid |
Граница выводится как сплошная незатененная линия. |
Когда используется сокращенное свойство , оно может принимать до четырех значений, которые применяются таким же образом, как значения сокращенного свойства margin.
Реализация размывания границы (вместо ее исключения) реализуется свойствами -color.
Наконец, можно задать любой цвет для любой отдельной границы, либо с помощью одного свойства, такого как перечисленные выше, либо с помощью сокращенного свойства . Обратитесь к описанию сокращенного свойства margin, чтобы подробнее узнать о задании количества свойств меньше четырех.
Как и background-color, может получать значение transparent. Это может быть полезно при работе с крайними случаями, которые требуют согласованной композиции, но не согласованного использования границ.
В отличие от различных свойств границы -width, -style, и -color, эти пять свойств позволяют определить в данный момент три характеристики четырех границ объекта, или любой одиночной границы. Допустимые сокращенные значения border (и т.д.) содержат любые или все свойства ширины, стиля и цвета, которые применяются к границе, единственное ограничение состоит в том, что необходимо ссылаться в текущий момент либо на одну сторону элемента, либо на все четыре сразу.
Рассмотрим следующее правило границы:
#borderShorthandExample {
border: 2px outset rgb(160,0,0);
padding: .857em;
background-color: rgb(255,224,224);
}

Элемент, к которому применяется приведенное выше правило, будет выглядеть точно так, как этот параграф в рамке.
Когда значение в сокращенном правиле border отсутствует, выводимый элемент будет использовать значения по умолчанию:
solid.Рассматриваемые здесь "правила" являются линиями начерченным в компоновке, а не директивами, которым надо следовать. Такие линии улучшают контраст между элементом и его окружающим пространством, и во многих случаях они помогают создать в компоновке иллюзию глубины. Этот последний результат подтверждается примером существования стилей границы и .
Хотя эти же самые эффекты можно получить, размещая границы вокруг всех четырех сторон элемента, возможность точно начертить определенные линии в компоновке предоставляет дизайнеру существенный контроль над деталями.
Когда создается компоновка, которая требует исключительных навыков от стилиста, необходимо будет учитывать граничные случаи, этот вопрос уже возникал в предыдущем обсуждении полей.
В связи с тем, как реализуется дизайн сайта, встречается много случаев, где тот или иной элемент может иметь структурные свойства аналогичные другим элементам в документе, но иметь различные презентационные требования. В этих ситуациях вполне разумно написать одно правило для самого общего случая, и дополнительные правила для каждого из предельных случаев. Именно в связи с этим и существуют значения auto и inherit: для использования стиля по умолчанию в качестве предельного случая.
В случае границ, предельные случаи вполне могут требовать изменения одной характеристики границы на одной стороне элемента — и когда кто-то разумно придерживается принципа
Определенные разделы документа необходимо украсить с помощью подчеркиваний и рамок.
Добавляем подчеркивание снизу к заголовку, и рамку вокруг цитаты.
h1 { border-bottom: 1px solid rgb(153,153,153); }
.pullQuote { border: 1px solid rgb(153,153,153); }
Могут встречаться элементы с фоновыми цветами вторичных или отличных оттенков, которые требуют дополнительного промежутка между контентом и полями. В других ситуациях требуется создать пространство между границами и соседним текстом.
В таких и многих других случаях используются свойства padding, , padding-right, , и . Эти свойства вставляют дополнительное пространство между полями или границами элемента и его контентом. На рисунке 30.1 четко представлены отношения между полями, границами, и заполнением.
Эти свойства ведут себя точно таким же образом, как и свойства полей, со следующими исключениями:
auto функционально бесполезны в ссылках на свойства заполнения.К элементам, которым ранее были добавлены границы, нужно добавить дополнительные промежутки.
Вставляем дополнительные промежутки рядом с границами, заданными ранее для заголовка и цитаты.
body { padding: 0; }
h1 { padding: .5em 0 .5em 0; }
.pullQuote { padding: .5em; }
Большинство элементов, как правило, могут изменять свои размеры. Вы видели эту возможность, продемонстрированную ранее в лекции при обсуждении полей auto.
Свойствами CSS, которые используют для манипуляций размерами элементов, являются width, height, min-width, max-width, min-height, и max-height. Эти свойства можно затем разъединить (или соединить) с размерами контента элементов с помощью свойства overflow.
Существует также свойство clip, которое скрывает части элемента внутри его полей. Однако в данной лекции оно не рассматривается, в связи с его узкой областью применения.
Как правило, width и height создают именно тот результат, которые можно было бы от них ожидать. Однако их использование имеет некоторые важные особенности.
width и height не могут применяться к строковым элементам … Существует несколько элементов (такие как span, strong, и em ), которые будут игнорировать применение значений width и height при обычных обстоятельствах. Список таких элементов можно найти в обсуждении типов элементов позже в этой лекции.width и height, даже если они являются строковыми элементами. Рекомендация CSS 2.1 называет изображения "заменяемыми" элементами, что означает, что браузеры всегда должны интерпретировать их как обладающие статическими размерами. Поэтому их размеры можно изменять произвольным образом.width и height являются единственными свойствами, которые могут влиять на функциональные размеры элемента. В результате, можно легко оказаться в ситуации, когда элемент слишком маленький (обычно слишком узкий), чтобы содержать свой контент ожидаемым образом, что ведет к выбросам. Обсуждаемая ниже боксовая type="screen" ). Тип экрана в конечном счете требует, чтобы все единицы измерения были преобразованы в измерения в пикселях, что может отображаться по разному в различных браузерах.Время от времени, встречаются ситуации, когда необходимо ограничить размер элемента — обычно, чтобы гарантировать, что столбец с пропорциональными размерами всегда будет сохранять удобочитаемую ширину. Различные min - и max - свойства отвечают этим требованиям. Как и в случае со свойствами width и height, результаты, которые можно ожидать от использования этих свойств, как правило, вполне предсказуемы.
Однако, по опыту автора, эти свойства имеют ограниченное применение (хотя другие авторы с этим не согласны). Как обычные старые width и height, они зависят от ошибок округления, которые могут создавать совершенно непредсказуемые результаты. Более важно то, что они совершенно не поддерживаются в браузере IE 6, который в июле 2008 г. все еще удерживал значительную долю рынка.
Поля auto были размещены справа и слева в контейнере страницы. Теперь необходимо, чтобы width (ширина) для этих значений полей создавало какой-то смысл. Более того, планируется присвоить цитате (pullquote) значение float, поэтому она тоже получает некоторую ширину.
Изменяем ширину контейнера документа и цитаты.
#main { width: 42em; }
.pullQuote { width: 14em; }
Когда задано свойство элемента width или height, необходимо иногда рассмотреть, какие требуются результаты в том случае, когда контент этого элемента занимает большее пространство, чем доступно. Это особенно касается сайтов с контентом, генерируемым пользователями, и строгими спецификациями компоновки.
Для обработки таких ситуаций предназначено свойство overflow и четыре его допустимые значения - visible, hidden, auto, и scroll. Рисунок .305 показывает результат, который они создают при применении к элементу, контент которого выходит за пределы своего ограничивающего
(рис 30.5) Результаты использования свойства CSS overflow.visible (по умолчанию) |
Контент за пределами допустимых размеров элементов выводится, не оказывая влияния на поток или поля смежных элементов. Следовательно, контент одного элемента может выводиться вперемешку с контентом его соседей. Методы для исключения такого результата и для специальных случаев, вызываемых проблемами представления в браузере IE, рассматриваются в следующих лекциях. |
hidden |
Весь контент, который находится за рамками элемента, будет скрыт от просмотра. |
auto |
Размеры элемента будут ограничены, как в случае использования значения hidden, но в случае необходимости создаются полосы прокрутки, чтобы сделать невидимый контент доступным посетителю. |
scroll |
В элемент будут встроены вертикальная и горизонтальная полосы прокрутки, даже если они не нужны. |
Теперь, когда фундаментальные свойства компоновки были рассмотрены, пришло время показать, как ширина элемента выводится в браузере согласно его свойствам CSS — и как удержать элементы от разрушения создаваемых компоновок. Некоторые результаты имеют вполне здравый смысл, в то время как другие могут показаться совершенно противоречащими интуиции. Чтобы усложнить ситуацию, на самом деле рассмотрения требуют два алгоритма компоновки:
Как и в случае текста, размеры элементов можно задавать либо пропорциональными единицами измерения, такими как % и em, либо статическими единицами измерения, такими как px. Необходимо отметить также, что холст браузера всегда измеряется статическим значением, которое невозможно узнать без использования кода клиентского сценария либо для извлечения этого размера, либо для изменения размера окна — методов, которые плохо подходят для требований доступности,
По умолчанию для width используется значение auto, что на обычном языке означает "использовать все доступное пространство". Результат для блочных элементов состоит в том, что их вычисленная ширина занимает все это пространство. В отношении height, элементы по умолчанию растягиваются, чтобы охватить весь свой контент.
Если вы изменяете значения width и height, то затем надо быть очень внимательным, чтобы гарантировать, что контент элемента поместится (со своими полями, границами, и заполнением) в определенную ширину. Легче всего это сделать, используя следующий процесс:
| Единица измерения | Преимущества | Недостатки |
|---|---|---|
| em | font-size и line-height в документе должны задаваться явные и предсказуемые значения |
|
| процент | ||
| px |
Боксовая
Последний из этих пунктов, в свою очередь, включает остальные пять. Однако, с целью упрощения изложения, этот раздел будет рассматривать только простые отношения элементов предок-потомок, и отложим обсуждение взаимодействий многоуровневой боксовой
Основное правило состоит в том, что вычисленная ширина или высота элемента равна следующему:
margin + border + padding + (width|height)
Во многих случаях ширина и/или высота будут задаваться как автоматическое значение по умолчанию, что означает, что область холста, предназначенная для контента, равна следующему:
available_canvas - margin - padding - border
В этом уравнении available_canvas (доступный_холст) само является дискретным значением (если часто не автоматически вычисляемым), минус величина полей, границ и заполнения. Это число наиболее важно для ширины элементов, так как ошибки вычисления ширины со стороны дизайнера будут иметь нежелательный результат, вызывая появление в окне браузера горизонтальной полосы прокрутки. Кроме того, браузеры всегда помещают элементы по левому краю холста браузера, что будет иначе приводить к
Рассмотрим следующее правило таблицы стилей:
#myLayoutColumn {
width: 50em;
margin: 1.5em auto 1.5em auto;
border: .1em;
padding: .9em;
}
Как было рассмотрено выше, во время объяснения свойств полей, можно ожидать, что #myLayoutColumn будет центрировать себя в элементе своего контейнера, будет ли этот контейнер body, или чем-то созданным разработчиками.
Более того, если активация "строгого режима" (используя соответствующее объявление !DOCTYPE) заставляет использовать боксовую
0.1em + .9em + 50em + .9em + .1em = 52em
В информационной среде screen браузер возьмет тогда это значение, округлит все значения по отдельности до ближайшего пикселя, и выведет соответственно результат.
Когда используется боксовая
Если этому же элементу присвоено заполнение: 5%, то его вычисленная ширина контента будет 400 пикселей:
20% + 5% + 5% + 20% = 50% 0.50 x 800 = 400 800 - 400 = 400
Будущие руководства обсуждают создание мульти-столбцовых компоновок, поэтому в этой лекции осталось рассмотреть только три свойства CSS: display, float, и clear.
За исключением частей html, body, и table, каждый элемент в Рекомендациях HTML 4.01, который связан с основным контентом, имеет соответствующий строковый или блочный тип. Каждый тип определяет поведение компоновки по умолчанию различным образом:
margin, width, height, и float в правилах таблиц стилей, применимых к этим элементам (за исключением img и object ), игнорируются.white-space .float не присвоено значение left или right, всегда будет выводиться с предшествующим и последующим разрывом строки.auto (по умолчанию), всегда будут расширяться, чтобы заполнить всю доступную им ширину.Свойство display имеет три обычно используемых значения — block, inline, и none — два из которых относятся к соответствующим типам элементов. Эффект изменения значения свойства display элемента состоит в том, что строковый элемент будет вести себя как блочный, или блочный элемент будет вести себя как строковый, или изменение представления документа, как если бы этот элемент (и весь его контент) не существовал бы вообще.
Очевидно, что жизненно важно знать, какие элементы соответствуют какому типу по умолчанию, отношения представлены кратко в таблице 30.2:
| Элемент | Тип | Подтип | Примечание |
|---|---|---|---|
a | строковый | специальный | |
| строковый | фразовый | |
| строковый | фразовый | |
address | блочный | Ведет себя аналогично p в обычной практике |
|
blockquote | строковый | Должен содержать по крайней мере один блочный элемент, когда объявленный !DOCTYPE будет Strict | |
Охватывает весь холст документа; обычно с учетом поля (в IE, Firefox, и Safari) или заполнения (в Opera) в 10px в среде screen |
|||
cite | строковый | фразовый | |
div | блочный | ||
em | строковый | фразовый | |
fieldset | блочный | Обычно выводится по умолчанию с border: 1px black; |
|
form | блочный | ||
h1 … h6 | блочный | заголовок | |
input | строковый | управление формой | |
img | строковый | специальный | |
label | строковый | управление формой | |
li | блочный | Тип элемента не определенный в Определении Типа Документа, но этот элемент может содержать блочные или строковые элементы; Рекомендация CSS 2.1 не рассматривают значение display для позиций списка |
|
ol | блочный | список | |
p | блочный | Может содержать только строковые элементы; обычно выводится с верхним и нижним полями | |
span | строковый | специальный | |
strong | строковый | фразовый | |
table | блочный | ||
ul | блочный | список |
Только поля между двумя смежными блочными элементами одного подтипа будут сжиматься.
Как насчет того, чтобы удалить аннотацию "Prologue" из заголовка, просто с целью демонстрации?
Удаляем посторонний фрагмент из заголовка.
.sectionNote { display: none; }
![]() |
Фотография размещается слева от этого параграфа. Практически все могут видеть, что этот текст естественным образом ее обтекает, хотя некоторым сначала нужно прекратить удивляться, зачем это понадобилось приклеивать к кошке кусок бекона липкой лентой. Для определения такого поведения компоновки можно использовать атрибуты HTML, но данный результат можно реализовать и с помощью CSS. |
Как можно было бы догадаться, пара свойство/значение, которая создает это волшебство, имеет вид float: left;. Подробное рассмотрение работы с float: right является также вполне полезной парой свойство/значение, и в связи с этим, когда понадобится отменить задание class, которое вызывает float, можно определить float: none.
Свойство float имеет несколько инструкций по использованию:
float будет иметь смысл, только если применяется к блочному элементу с явно заданным width.float, clear, и margin появляются вместе в правилах таблиц стилей, предназначенных для создания в компоновке столбцов.О задании значения float для цитаты говорилось выше, поэтому сейчас сделаем это и посмотрим результат.
Цитата всплывает к правому полю.
.pullQuote { float: right; }
Подобно свойству float, свойству clear можно присвоить одно из значений left, right, или none. Также поддерживается значение both.
В то время, как свойство float управляет тем, как контент элементов потомков должен обтекать вокруг него, свойство clear управляет тем, как элемент должен обтекать вокруг всех своих соседей — во многих практических случаях, не во всех.
Рисунок 30.6 показывает поведение clear: left; в компоновке, где двум начальным последовательным элементам были присвоены одинаковые значения height, и значения float равные left и right:
(рис 30.6) clear:left позволяет нижнему боксу очистить оба столбца, так как они имеют одинаковую высоту height.В предыдущем примере используемый по умолчанию поток элемента #cLeftWidget помещает его сразу под текстом — то есть между #fLeftWidget и #fRightWidget.
Рассмотрим, что произойдет, когда первый из этой же совокупности элементов будет сделан короче, чем его правый аналог, как показано на рисунке 30.7.
(рис 30.7) Когда правый столбец будет длиннее левого, clear:left не очистит оба столбца, поэтому необходимо использовать вместо него clear:both.В первом примере значение clear последнего элемента задано как left, чтобы получить результат: так как оба clear: both;. Это обсуждение свойства clear является простым введением в его возможности, более подробно эти вопросы будут рассмотрены в будущих лекциях.
В связи с различием процессоров представления, необходимостью охватывать широкое поле традиционно определяемых элементов, и невозможностью предсказать конкретные размеры окна браузера, компоновка документов Web наполнена трудностями и предостережениями. Однако общий
margin, или одиночное свойство границы, такое как margin-top?margin, padding, и border-width задаются со всеми четырьмя значениями, в каком порядке эти значения применяются к четырем сторонам элемента?border-style будет использоваться, чтобы придать элементу вид как у кнопки интерфейса?body и задать для width значение больше 100%, изменится ли поведение холста документа?display значение block в элементе a (ссылка) и задать для этого элемента разумную высоту и ширину, как изменится поведение события указания мышью на эту ссылку в среде представления screen?float ) элемент - или это только видимость изменения?float к элементу, какое другое свойство также необходимо задать на этом элементе?Бен Хеник создает Web-сайты того или иного вида начиная с сентября 1995 г., когда он взялся за свой первый проект Web как академический доброволец. С тех пор большая часть его работы была сделана в качестве фрилансера.
Бен является универсалом, его навыки касаются почти любого аспекта создания и разработки сайта, от CSS и HTML до проектирования и написания
Он живет в Лоуренсе, Канзас с тремя компьютерами и без телевизора. Вы может прочитать больше о нем и его работе на сайте http://henick.net (http://www.henick.net/).
На первый взгляд,
Однако процессоры визуализации браузеров следуют длинному списку правил, изложенных в Рекомендации CSS 2.1, и некоторым своим собственным. В связи с этим имеется множество деталей, которые необходимо понимать, прежде чем добавлять в набор используемых средств стилиста более развитые методы.
В этой лекции мы познакомимся со свойствами CSS, которые управляют компоновкой элементов HTML, включая их границы, поля, и многое другое. Будут также рассмотрены некоторые упомянутые выше правила. Развитая столбцовая компоновка и сеточно-ориентированные методы будут рассмотрены в последующих лекциях, которые исследуют компоновку форм, обтекание, очистку, и позиционирование более подробно. Будет рассмотрено много связанных с лекцией примеров кода для демонстрации обсуждаемых методов.
Лекция имеет следующее содержание:
Многие элементы HTML, такие как элементы div и заголовки, изображаются по умолчанию по всей ширине холста браузера и инициируют терминальные разрывы строки, так что несколько таких элементов в последовательности будут выводиться в стеке сверху вниз на холсте документа.
Однако элементов HTML и стилей браузера, заданных обычно для них, будет недостаточно для целого диапазона вариантов использования, к рассмотрению которых обращаются разработчики в своей работе. Совместная работа CSS и HTML предназначена для "заполнения пробелов", так что классы и id могут добавлять семантическое значение к разметке, в то время как правила таблиц стилей могут изменить компоновку и представление контента — возможно даже вообще отменяя большую часть используемых по умолчанию стилей браузера.
Точное управление свободным пространством является одним из самых важных инструментов дизайнера — и по мнению автора, единственным самым важным. Однако, та степень управления свободным пространством, которая обеспечивает высокое качество дизайну сайта, отсутствует в используемых по умолчанию таблицах стиля браузера, что означает, что стилисты часто используют рассматриваемые в этой лекции поля, границы, заполнение и другие свойства компоновки CSS.
Поля (margin), границы (border), и заполнение (padding) организованы, как показано на рисунке 30.1.
(рис 30.1) Иллюстрация различных частей бокса элемента, помеченных соответствующими свойствами CSS.Поля можно определять по отдельности или в сокращенном правиле. Более того, сокращенное правило позволяет, тем не менее, управлять отдельными границами вокруг объекта. Допустимые значения обычно определяют в единицах измерения px или em (пикселях или em). В таблицах стилей, предназначенных для печати, вместо них можно использовать единицы измерения in, cm, или pt (дюймы, сантиметры или пункты).
Во всех случаях % (процент) является допустимым значением, но должен использоваться с осторожностью; такие значения вычисляются как доля от ширины элемента предка, и беззаботное использование таких значений может иметь непредвиденные последствия. Эта проблема подробнее рассматривается ниже во время обсуждения боксовой
Все строковые элементы, за исключением изображений, не имеют полей и не будут принимать значения полей. Список таких элементов представлен в таблице 30.2 ниже.
В зависимости от обстоятельств, задание значения auto говорит браузеру, что надо вывести поле согласно значению, имеющемуся в его собственной таблице стилей. Однако, когда такое поле применяется к элементу со значимой шириной, поле auto заставляет все доступное пространство выводиться как пробел.
Рассмотрим следующее правило:
.narrowWaisted {
width: 16.667em;
margin: 1em auto 1em auto;
}
… Блочный элемент класса narrowWaisted будет центрировать себя в середине доступного холста.
… Или для правого поля применяемого элемента можно задать некоторое относительное небольшое значение, в то время как левому полю присваивается значение auto.
Когда делается таким образом, этот элемент будет выглядеть почти прижатым вправо.
Всем свойствам полей можно присваивать отрицательные значения. В этом случае смежное поле может быть фактически до некоторой степени "исключено". При задании достаточно большого отрицательного поля для достаточно большого элемента смежный элемент может даже перекрываться.
Например, рассмотрим следующие простые элементы 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) При применении отрицательных полей нижний элемент смещается вверх и перекрывает заголовок.
В тех случаях, когда два аналогичных и смежных блочных элемента имеют ненулевые поля, будет применяться только большее из двух полей. Например, рассмотрим следующее правило:
p {
margin: 1em auto 1.5em auto;
}
Если документ, включающий это правило стиля, выводится буквально, то получающееся поле между двумя параграфами в последовательности будет составлять 2.5em, как сумма нижнего поля параграфа 1 (1.5em) и верхнего поля параграфа 2 (1em). Однако благодаря применению сжимаемых полей, поле между ними будет только 1.5em.
Списки и заголовки являются особенными среди блочных элементов, поэтому их поля не будут сжиматься с полями других блочных элементов.
В лекции об оформлении текста верстка начального раздела рассказа Ф. Скотта Фитцджеральда была сделана с помощью множества инструментов, доступных в 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;
}
Новые границы для тела, заголовка, цитаты, контейнера документа, и параграфов
body { margin: 0; }
#main { margin: 0 auto 0 auto; }
h1 { margin: 0 0 1em 0; }
.pullQuote { margin: auto 0 1em 1em; }
p { margin: 0; }
.attribution { margin: 0 0 1.5em 0; }
Существует сокращенное свойство границы, но оно будет полезно, только когда вы захотите предоставить полную и согласованную границу вокруг всех четырех сторон элемента. Можно также задать толщину, стиль и цвет любой из четырех возможных сторон элемента, используя любые мыслимые комбинации следующих свойств.
border-widthborder-style border-color border-topborder-top-widthborder-top-styleborder-top-colorborder-rightborder-right-widthborder-right-styleborder-right-colorborder-bottom border-bottom-width border-bottom-style border-bottom-color border-left border-left-width border-left-style border-left-color Эти свойства ведут себя точно так же, как и можно было бы ожидать: они задают явную толщину одной или нескольких сторон границы.
Сокращенное свойство border-width принимает значения в той же нотации, что и сокращенное свойство margin, за исключением того только, что значения процента не поддерживаются. Вполне можно написать правило подобное следующему:
td {
border-width: 1px 0 0 1px;
}
(рис 30.4) Восемь обычных стилей границы в действии.Свойства обычно принимают какое-либо из следующих значений:
dashed |
Длина пунктиров и величина пробела между ними определяется браузером. |
dotted |
Величина пробела между точками (которые могут быть любой формы с отношением сторон 1) определяется браузером. |
double |
Заданная толщина делится на три и изображается в порядке заполнено-отсутствие-заполнено. |
|
Изображается трехмерная вдавленная граница. |
|
Граница будет затенена, чтобы заставить ее выглядеть, как будто элемент, к которому она применяется вдавлен в холст. |
none |
Эквивалентно определению -width равной нулю. |
|
Граница будет затенена, чтобы заставить ее выглядеть, как будто элемент, к которому она применяется выдавлен из холста. |
ridge |
Изображается трехмерная выпуклая граница. |
solid |
Граница выводится как сплошная незатененная линия. |
Когда используется сокращенное свойство , оно может принимать до четырех значений, которые применяются таким же образом, как значения сокращенного свойства margin.
Реализация размывания границы (вместо ее исключения) реализуется свойствами -color.
Наконец, можно задать любой цвет для любой отдельной границы, либо с помощью одного свойства, такого как перечисленные выше, либо с помощью сокращенного свойства . Обратитесь к описанию сокращенного свойства margin, чтобы подробнее узнать о задании количества свойств меньше четырех.
Как и background-color, может получать значение transparent. Это может быть полезно при работе с крайними случаями, которые требуют согласованной композиции, но не согласованного использования границ.
В отличие от различных свойств границы -width, -style, и -color, эти пять свойств позволяют определить в данный момент три характеристики четырех границ объекта, или любой одиночной границы. Допустимые сокращенные значения border (и т.д.) содержат любые или все свойства ширины, стиля и цвета, которые применяются к границе, единственное ограничение состоит в том, что необходимо ссылаться в текущий момент либо на одну сторону элемента, либо на все четыре сразу.
Рассмотрим следующее правило границы:
#borderShorthandExample {
border: 2px outset rgb(160,0,0);
padding: .857em;
background-color: rgb(255,224,224);
}

Элемент, к которому применяется приведенное выше правило, будет выглядеть точно так, как этот параграф в рамке.
Когда значение в сокращенном правиле border отсутствует, выводимый элемент будет использовать значения по умолчанию:
solid.Рассматриваемые здесь "правила" являются линиями начерченным в компоновке, а не директивами, которым надо следовать. Такие линии улучшают контраст между элементом и его окружающим пространством, и во многих случаях они помогают создать в компоновке иллюзию глубины. Этот последний результат подтверждается примером существования стилей границы и .
Хотя эти же самые эффекты можно получить, размещая границы вокруг всех четырех сторон элемента, возможность точно начертить определенные линии в компоновке предоставляет дизайнеру существенный контроль над деталями.
Когда создается компоновка, которая требует исключительных навыков от стилиста, необходимо будет учитывать граничные случаи, этот вопрос уже возникал в предыдущем обсуждении полей.
В связи с тем, как реализуется дизайн сайта, встречается много случаев, где тот или иной элемент может иметь структурные свойства аналогичные другим элементам в документе, но иметь различные презентационные требования. В этих ситуациях вполне разумно написать одно правило для самого общего случая, и дополнительные правила для каждого из предельных случаев. Именно в связи с этим и существуют значения auto и inherit: для использования стиля по умолчанию в качестве предельного случая.
В случае границ, предельные случаи вполне могут требовать изменения одной характеристики границы на одной стороне элемента — и когда кто-то разумно придерживается принципа
Определенные разделы документа необходимо украсить с помощью подчеркиваний и рамок.
Добавляем подчеркивание снизу к заголовку, и рамку вокруг цитаты.
h1 { border-bottom: 1px solid rgb(153,153,153); }
.pullQuote { border: 1px solid rgb(153,153,153); }
Могут встречаться элементы с фоновыми цветами вторичных или отличных оттенков, которые требуют дополнительного промежутка между контентом и полями. В других ситуациях требуется создать пространство между границами и соседним текстом.
В таких и многих других случаях используются свойства padding, , padding-right, , и . Эти свойства вставляют дополнительное пространство между полями или границами элемента и его контентом. На рисунке 30.1 четко представлены отношения между полями, границами, и заполнением.
Эти свойства ведут себя точно таким же образом, как и свойства полей, со следующими исключениями:
auto функционально бесполезны в ссылках на свойства заполнения.К элементам, которым ранее были добавлены границы, нужно добавить дополнительные промежутки.
Вставляем дополнительные промежутки рядом с границами, заданными ранее для заголовка и цитаты.
body { padding: 0; }
h1 { padding: .5em 0 .5em 0; }
.pullQuote { padding: .5em; }
Большинство элементов, как правило, могут изменять свои размеры. Вы видели эту возможность, продемонстрированную ранее в лекции при обсуждении полей auto.
Свойствами CSS, которые используют для манипуляций размерами элементов, являются width, height, min-width, max-width, min-height, и max-height. Эти свойства можно затем разъединить (или соединить) с размерами контента элементов с помощью свойства overflow.
Существует также свойство clip, которое скрывает части элемента внутри его полей. Однако в данной лекции оно не рассматривается, в связи с его узкой областью применения.
Как правило, width и height создают именно тот результат, которые можно было бы от них ожидать. Однако их использование имеет некоторые важные особенности.
width и height не могут применяться к строковым элементам … Существует несколько элементов (такие как span, strong, и em ), которые будут игнорировать применение значений width и height при обычных обстоятельствах. Список таких элементов можно найти в обсуждении типов элементов позже в этой лекции.width и height, даже если они являются строковыми элементами. Рекомендация CSS 2.1 называет изображения "заменяемыми" элементами, что означает, что браузеры всегда должны интерпретировать их как обладающие статическими размерами. Поэтому их размеры можно изменять произвольным образом.width и height являются единственными свойствами, которые могут влиять на функциональные размеры элемента. В результате, можно легко оказаться в ситуации, когда элемент слишком маленький (обычно слишком узкий), чтобы содержать свой контент ожидаемым образом, что ведет к выбросам. Обсуждаемая ниже боксовая type="screen" ). Тип экрана в конечном счете требует, чтобы все единицы измерения были преобразованы в измерения в пикселях, что может отображаться по разному в различных браузерах.Время от времени, встречаются ситуации, когда необходимо ограничить размер элемента — обычно, чтобы гарантировать, что столбец с пропорциональными размерами всегда будет сохранять удобочитаемую ширину. Различные min - и max - свойства отвечают этим требованиям. Как и в случае со свойствами width и height, результаты, которые можно ожидать от использования этих свойств, как правило, вполне предсказуемы.
Однако, по опыту автора, эти свойства имеют ограниченное применение (хотя другие авторы с этим не согласны). Как обычные старые width и height, они зависят от ошибок округления, которые могут создавать совершенно непредсказуемые результаты. Более важно то, что они совершенно не поддерживаются в браузере IE 6, который в июле 2008 г. все еще удерживал значительную долю рынка.
Поля auto были размещены справа и слева в контейнере страницы. Теперь необходимо, чтобы width (ширина) для этих значений полей создавало какой-то смысл. Более того, планируется присвоить цитате (pullquote) значение float, поэтому она тоже получает некоторую ширину.
Изменяем ширину контейнера документа и цитаты.
#main { width: 42em; }
.pullQuote { width: 14em; }
Когда задано свойство элемента width или height, необходимо иногда рассмотреть, какие требуются результаты в том случае, когда контент этого элемента занимает большее пространство, чем доступно. Это особенно касается сайтов с контентом, генерируемым пользователями, и строгими спецификациями компоновки.
Для обработки таких ситуаций предназначено свойство overflow и четыре его допустимые значения - visible, hidden, auto, и scroll. Рисунок .305 показывает результат, который они создают при применении к элементу, контент которого выходит за пределы своего ограничивающего
(рис 30.5) Результаты использования свойства CSS overflow.visible (по умолчанию) |
Контент за пределами допустимых размеров элементов выводится, не оказывая влияния на поток или поля смежных элементов. Следовательно, контент одного элемента может выводиться вперемешку с контентом его соседей. Методы для исключения такого результата и для специальных случаев, вызываемых проблемами представления в браузере IE, рассматриваются в следующих лекциях. |
hidden |
Весь контент, который находится за рамками элемента, будет скрыт от просмотра. |
auto |
Размеры элемента будут ограничены, как в случае использования значения hidden, но в случае необходимости создаются полосы прокрутки, чтобы сделать невидимый контент доступным посетителю. |
scroll |
В элемент будут встроены вертикальная и горизонтальная полосы прокрутки, даже если они не нужны. |
Теперь, когда фундаментальные свойства компоновки были рассмотрены, пришло время показать, как ширина элемента выводится в браузере согласно его свойствам CSS — и как удержать элементы от разрушения создаваемых компоновок. Некоторые результаты имеют вполне здравый смысл, в то время как другие могут показаться совершенно противоречащими интуиции. Чтобы усложнить ситуацию, на самом деле рассмотрения требуют два алгоритма компоновки:
Как и в случае текста, размеры элементов можно задавать либо пропорциональными единицами измерения, такими как % и em, либо статическими единицами измерения, такими как px. Необходимо отметить также, что холст браузера всегда измеряется статическим значением, которое невозможно узнать без использования кода клиентского сценария либо для извлечения этого размера, либо для изменения размера окна — методов, которые плохо подходят для требований доступности,
По умолчанию для width используется значение auto, что на обычном языке означает "использовать все доступное пространство". Результат для блочных элементов состоит в том, что их вычисленная ширина занимает все это пространство. В отношении height, элементы по умолчанию растягиваются, чтобы охватить весь свой контент.
Если вы изменяете значения width и height, то затем надо быть очень внимательным, чтобы гарантировать, что контент элемента поместится (со своими полями, границами, и заполнением) в определенную ширину. Легче всего это сделать, используя следующий процесс:
| Единица измерения | Преимущества | Недостатки |
|---|---|---|
| em | font-size и line-height в документе должны задаваться явные и предсказуемые значения |
|
| процент | ||
| px |
Боксовая
Последний из этих пунктов, в свою очередь, включает остальные пять. Однако, с целью упрощения изложения, этот раздел будет рассматривать только простые отношения элементов предок-потомок, и отложим обсуждение взаимодействий многоуровневой боксовой
Основное правило состоит в том, что вычисленная ширина или высота элемента равна следующему:
margin + border + padding + (width|height)
Во многих случаях ширина и/или высота будут задаваться как автоматическое значение по умолчанию, что означает, что область холста, предназначенная для контента, равна следующему:
available_canvas - margin - padding - border
В этом уравнении available_canvas (доступный_холст) само является дискретным значением (если часто не автоматически вычисляемым), минус величина полей, границ и заполнения. Это число наиболее важно для ширины элементов, так как ошибки вычисления ширины со стороны дизайнера будут иметь нежелательный результат, вызывая появление в окне браузера горизонтальной полосы прокрутки. Кроме того, браузеры всегда помещают элементы по левому краю холста браузера, что будет иначе приводить к
Рассмотрим следующее правило таблицы стилей:
#myLayoutColumn {
width: 50em;
margin: 1.5em auto 1.5em auto;
border: .1em;
padding: .9em;
}
Как было рассмотрено выше, во время объяснения свойств полей, можно ожидать, что #myLayoutColumn будет центрировать себя в элементе своего контейнера, будет ли этот контейнер body, или чем-то созданным разработчиками.
Более того, если активация "строгого режима" (используя соответствующее объявление !DOCTYPE) заставляет использовать боксовую
0.1em + .9em + 50em + .9em + .1em = 52em
В информационной среде screen браузер возьмет тогда это значение, округлит все значения по отдельности до ближайшего пикселя, и выведет соответственно результат.
Когда используется боксовая
Если этому же элементу присвоено заполнение: 5%, то его вычисленная ширина контента будет 400 пикселей:
20% + 5% + 5% + 20% = 50% 0.50 x 800 = 400 800 - 400 = 400
Будущие руководства обсуждают создание мульти-столбцовых компоновок, поэтому в этой лекции осталось рассмотреть только три свойства CSS: display, float, и clear.
За исключением частей html, body, и table, каждый элемент в Рекомендациях HTML 4.01, который связан с основным контентом, имеет соответствующий строковый или блочный тип. Каждый тип определяет поведение компоновки по умолчанию различным образом:
margin, width, height, и float в правилах таблиц стилей, применимых к этим элементам (за исключением img и object ), игнорируются.white-space .float не присвоено значение left или right, всегда будет выводиться с предшествующим и последующим разрывом строки.auto (по умолчанию), всегда будут расширяться, чтобы заполнить всю доступную им ширину.Свойство display имеет три обычно используемых значения — block, inline, и none — два из которых относятся к соответствующим типам элементов. Эффект изменения значения свойства display элемента состоит в том, что строковый элемент будет вести себя как блочный, или блочный элемент будет вести себя как строковый, или изменение представления документа, как если бы этот элемент (и весь его контент) не существовал бы вообще.
Очевидно, что жизненно важно знать, какие элементы соответствуют какому типу по умолчанию, отношения представлены кратко в таблице 30.2:
| Элемент | Тип | Подтип | Примечание |
|---|---|---|---|
a | строковый | специальный | |
| строковый | фразовый | |
| строковый | фразовый | |
address | блочный | Ведет себя аналогично p в обычной практике |
|
blockquote | строковый | Должен содержать по крайней мере один блочный элемент, когда объявленный !DOCTYPE будет Strict | |
Охватывает весь холст документа; обычно с учетом поля (в IE, Firefox, и Safari) или заполнения (в Opera) в 10px в среде screen |
|||
cite | строковый | фразовый | |
div | блочный | ||
em | строковый | фразовый | |
fieldset | блочный | Обычно выводится по умолчанию с border: 1px black; |
|
form | блочный | ||
h1 … h6 | блочный | заголовок | |
input | строковый | управление формой | |
img | строковый | специальный | |
label | строковый | управление формой | |
li | блочный | Тип элемента не определенный в Определении Типа Документа, но этот элемент может содержать блочные или строковые элементы; Рекомендация CSS 2.1 не рассматривают значение display для позиций списка |
|
ol | блочный | список | |
p | блочный | Может содержать только строковые элементы; обычно выводится с верхним и нижним полями | |
span | строковый | специальный | |
strong | строковый | фразовый | |
table | блочный | ||
ul | блочный | список |
Только поля между двумя смежными блочными элементами одного подтипа будут сжиматься.
Как насчет того, чтобы удалить аннотацию "Prologue" из заголовка, просто с целью демонстрации?
Удаляем посторонний фрагмент из заголовка.
.sectionNote { display: none; }
![]() |
Фотография размещается слева от этого параграфа. Практически все могут видеть, что этот текст естественным образом ее обтекает, хотя некоторым сначала нужно прекратить удивляться, зачем это понадобилось приклеивать к кошке кусок бекона липкой лентой. Для определения такого поведения компоновки можно использовать атрибуты HTML, но данный результат можно реализовать и с помощью CSS. |
Как можно было бы догадаться, пара свойство/значение, которая создает это волшебство, имеет вид float: left;. Подробное рассмотрение работы с float: right является также вполне полезной парой свойство/значение, и в связи с этим, когда понадобится отменить задание class, которое вызывает float, можно определить float: none.
Свойство float имеет несколько инструкций по использованию:
float будет иметь смысл, только если применяется к блочному элементу с явно заданным width.float, clear, и margin появляются вместе в правилах таблиц стилей, предназначенных для создания в компоновке столбцов.О задании значения float для цитаты говорилось выше, поэтому сейчас сделаем это и посмотрим результат.
Цитата всплывает к правому полю.
.pullQuote { float: right; }
Подобно свойству float, свойству clear можно присвоить одно из значений left, right, или none. Также поддерживается значение both.
В то время, как свойство float управляет тем, как контент элементов потомков должен обтекать вокруг него, свойство clear управляет тем, как элемент должен обтекать вокруг всех своих соседей — во многих практических случаях, не во всех.
Рисунок 30.6 показывает поведение clear: left; в компоновке, где двум начальным последовательным элементам были присвоены одинаковые значения height, и значения float равные left и right:
(рис 30.6) clear:left позволяет нижнему боксу очистить оба столбца, так как они имеют одинаковую высоту height.В предыдущем примере используемый по умолчанию поток элемента #cLeftWidget помещает его сразу под текстом — то есть между #fLeftWidget и #fRightWidget.
Рассмотрим, что произойдет, когда первый из этой же совокупности элементов будет сделан короче, чем его правый аналог, как показано на рисунке 30.7.
(рис 30.7) Когда правый столбец будет длиннее левого, clear:left не очистит оба столбца, поэтому необходимо использовать вместо него clear:both.В первом примере значение clear последнего элемента задано как left, чтобы получить результат: так как оба clear: both;. Это обсуждение свойства clear является простым введением в его возможности, более подробно эти вопросы будут рассмотрены в будущих лекциях.
В связи с различием процессоров представления, необходимостью охватывать широкое поле традиционно определяемых элементов, и невозможностью предсказать конкретные размеры окна браузера, компоновка документов Web наполнена трудностями и предостережениями. Однако общий
margin, или одиночное свойство границы, такое как margin-top?margin, padding, и border-width задаются со всеми четырьмя значениями, в каком порядке эти значения применяются к четырем сторонам элемента?border-style будет использоваться, чтобы придать элементу вид как у кнопки интерфейса?body и задать для width значение больше 100%, изменится ли поведение холста документа?display значение block в элементе a (ссылка) и задать для этого элемента разумную высоту и ширину, как изменится поведение события указания мышью на эту ссылку в среде представления screen?float ) элемент - или это только видимость изменения?float к элементу, какое другое свойство также необходимо задать на этом элементе?Бен Хеник создает Web-сайты того или иного вида начиная с сентября 1995 г., когда он взялся за свой первый проект Web как академический доброволец. С тех пор большая часть его работы была сделана в качестве фрилансера.
Бен является универсалом, его навыки касаются почти любого аспекта создания и разработки сайта, от CSS и HTML до проектирования и написания
Он живет в Лоуренсе, Канзас с тремя компьютерами и без телевизора. Вы может прочитать больше о нем и его работе на сайте http://henick.net (http://www.henick.net/).
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.