В то время как HTML структурирует документ и сообщает веб-браузеру, какую функцию имеет определенный элемент, CSS выдает браузеру инструкции о том, как отобразить определенный элемент - оформление, размещение пробелов и позиционирование.
CSS - одна из широкого спектра технологий, одобренных консорциумом W3C и получивших общее название "стандарты Web ".
| начало 1990-х годов | Различные браузеры имели свои стили для отображения веб страниц. HTML развивался очень быстро и был способен удовлетворить все существовавшие на тот момент потребности по оформлению информации, поэтому CSS не получил тогда широкого признания |
| 1994 | Появился термин "каскадные таблицы стилей" |
| 1996 | Консорциумом W3C была издана рекомендация |
| 1998 | Консорциумом W3C принята рекомендация |
| Сентябрь 2009 | Консорциумом W3C утверждена рабочая версия |
Эта рекомендация W3C была принята в 1996 году и откорректирована в 1999 году. Основные возможности, предоставляемых этой рекомендацией:
padding ) и внешние ( margin ) отступы и рамки. Также в спецификацию входили ограниченные средства по позиционированию элементов, такие как float и clear.Эта рекомендация W3C была принята в 1998 году. Она построена на с сохранением
Рабочая версия W3C от 8 сентября 2009 года. Построена на , в ней исправлен ряд ошибок.
До появления CSS оформление веб-страниц осуществлялось непосредственно внутри содержимого документа. Однако с появлением CSS стало возможным принципиальное разделение содержания и представления документа. За счет этого нововведения стало возможным легкое применение единого стиля оформления для массы схожих документов, а также быстрое изменение этого оформления.
Использование CSS дает следующие преимущества:
CSS -файл. В этом случае браузер загружает только структуру документа и данные, хранимые на странице, а представление этих данных загружается браузером только один раз и кешируется.CSS -файл.CSS -верстки можно сделать блок текста, который остальной текст будет обтекать (например для меню) или сделать так, чтобы меню было всегда видно при прокрутке страницы.Известны также и недостатки:
CSS.CSS -файл, но и теги HTML и код PHP, которые сложным и ненаглядным способом связаны с селекторами CSS, что иногда сводит на нет простоту применения единых файлов стилей и значительно удлиняет время редактирования и тестирования.Отображение элементов реализуется с помощью системы правил, которые определяют, какие элементы HTML должны быть дополнительно оформлены, и в каждом правиле перечислятся свойства (например, цвет, размер, шрифт, и т.д.) этих элементов HTML, которыми они будут манипулировать, какие значения будут для них заданы.
Таким образом, CSS не является ни языком программирования, ни языком разметки.
Базовой конструкцией в CSS является правило следующего вида:
селектор {
свойство1: значение;
свойство2: значение;
свойство3: значение;
}
Селектор определяет элементы HTML, к которым будет применяться правило, определяемые реальным названием элемента, например, body, или другими средствами, такими как значения атрибута class.
Фигурные скобки {} содержат пары свойство/значение, которые разделяются между собой точкой с запятой; свойства отделяются от своих соответствующих значений двоеточием.
Свойства определяют, что вы хотите сделать с выделенными элементами. Они могут задавать, например, цвет элемента, цвет фона, позицию, поля, заполнение, тип шрифта, и многое другое.
Значения являются теми конкретными характеристиками, которые вы хотите задать каждому свойству выделенных элементов. Эти значения зависят от свойства.
Свойства, которые влияют на положение, поля, ширину, высоту и т.д. могут измеряться в пикселях, em, процентах, сантиметрах или других аналогичных единицах измерения.
Рассмотрим конкретный пример:
p {
margin: 10px;
font-family: Times New Roman;
color: green;
}
Это правило выбирает HTML элемент p, и для каждого элемента p в документах HTML, которые используют этот код CSS, будет применяться это правило, если только не будут существовать применяемые к ним более конкретные правила, которые будут переопределять это правило. Данное правило влияет на свойства, которые определяют поля вокруг параграфа ( margin ), шрифт текста в параграфе ( ), и цвет этого текста ( color ). Поля задаются размером в 10 пикселей, шрифт задается как Times New Roman, а цвет текста задается как green.
Все множество подобных правил совместно формируют таблицу стилей. Кроме таких правил в CSS существуют и другие конструкции, например комментарии CSS, селекторы объединения в группу.
Комментарии добавляют, помещая их между символами /* и */. Комментарии могут охватывать несколько строк, и в этом случае браузер будет игнорировать эти строки:
Можно также объединить в группу различные селекторы. Предположим, что вы хотите применить одинаковое оформление к h2 и p, тогда можно было бы написать следующий CSS:
h2 {color: red}
p {color: red}
Однако, можно сократить код CSS, группируя селекторы вместе с помощью запятой - правила в скобках применяются к обоим селекторам:
h2, p {color: red}
Существует несколько различных селекторов, каждый из которых соответствуют различным частям разметки. Тремя наиболее общими селекторами, которые встречаются чаще всего, являются следующие:
| Синтаксис | Селектор | Описание |
|---|---|---|
p {} |
селектор элемента | соответствует всем элементам на странице с указанным названием (элементам p, в приведенном выше случае) |
example{} |
селектор класса | соответствует всем элементам, которые имеют атрибут class с указанным значением, так что пример выше будет соответствовать <p class="example">, <li class="example"> или <div class="example">, или любому другому элементу со значением class = "example". |
#example{} |
селектор id |
соответствует всем элементам, которые имеют атрибут id с указанным значением, так что пример выше будет соответствовать <p id="example">, <li id="example"> или <div id="example"> , или любому другому элементу со значением id = "example". Селекторы id не проверяют название никакого элемента, и можно иметь только один селектор для каждого id в документе HTML - они являются уникальными для каждой страницы. |
С помощью селекторов CSS, селекторов элемента, класса и id -селекторов можно реализовать многое, но это, конечно, не все возможные селекторы - существуют другие селекторы, которые позволяют выбирать элементы для стилевого оформления на основе более специфических критериев:
| Селекторы | Описание |
|---|---|
| можно использовать для выбора каждого элемента на странице | |
| позволяют выбирать элементы на основе их атрибутов | |
| если вы хотите выбрать определенные элементы, которые являются потомками других конкретных элементов | |
| Селекторы нижележащих | если вы хотите выбирать определенные элементы, которые являются нижележащими относительно других конкретных элементов (не просто прямыми потомками, но также расположенные ниже в дереве) |
| Селекторы смежных одноуровневых | если вы хотите выбрать только определенные элементы, которые следуют за другими определенными элементами |
| Псевдо-классы | эти селекторы позволяют оформить элементы не на основе того, чем является элемент, но на основе более сложных факторов, скажем, таких как состояние ссылки (если на нее, например, наведен курсор, или она уже была посещена). |
| Псевдо-элементы | эти селекторы позволяют оформить определенные части элементов, а не весь элемент (например, первую букву в этом элементе), они позволяют также вставлять содержимое перед или после определенных элементов |
Универсальные селекторы выбирают каждый элемент на странице для применения к ним стилей оформления. Например, следующее правило определяет, что для каждого элемента на странице должна быть добавлена сплошная черная граница толщиной 1 пиксель:
* {
border: 1px solid #000000;
}
Селекторы атрибутов позволяют выбирать элементы на основе содержащихся в них атрибутов. Например, можно выбрать каждый элемент img с атрибутом alt с помощью следующего селектора:
img[alt] {
border: 1px solid #000000;
}
Используя приведенный выше селектор, можно создать черную границу вокруг любого изображения, которое имеет атрибут alt, и оформить другие изображения ярко-красной.
Можно выбирать элементы также и по значению атрибута, а не только по названию атрибута. Следующее правило задает все изображения с атрибутом src со значением alert.gif:
img[src="alert.gif"] {
border: 1px solid #000000;
}
Значительно более полезной является возможность выбирать определенные части атрибутов, например, расширения файлов. CSS3 фактически вводит три новых типа
Можно использовать селектор потомка для выбора только определенных элементов, которые являются потомками других определенных элементов. Например, следующее правило задает цвет текста только тех strong элементов, которые являются потомками элементов h3, как green, но не для других элементов strong:
h3 > strong {
color: green;
}
IE 6 (и более младших версиях).
Селекторы нижележащих элементов очень похожи на
<div>
<em>Привет</em>
<p>и сразу же
<em>Пока</em>.
</p>
</div>
В этом фрагменте элемент div является предком всех других элементов. Он имеет двух потомоков, em и p. Элемент p имеет один элемент потомок, еще один em.
Эти селекторы позволяют выбирать определенный элемент, который следует непосредственно после другого определенного элемента на том же уровне в иерархии элементов. Например, если вы хотите выбрать элементы p, которые следуют непосредственно после элементов h2, но никакие другие элементы p, можно воспользоваться следующим правилом:
h2 + p {
...
}
Селекторы смежных одноуровневых элементов не поддерживаются в браузере IE 6 (и более младших версиях).
Псевдо-классы используются для обеспечения стилевого оформления не для элементов, а для различных состояний элементов. Наиболее обычным применением, которое можно встретить, является оформление состояний ссылок.
Список ниже представляет различные псевдо-классы и описание состояния ссылки, которое они выбирают:
:link |
обычное состояние ссылок по умолчанию, когда вы впервые их находите |
:visited |
ссылки, которые вы уже посетили в используемом в данный момент браузере |
:focus |
ссылка (или поле формы, или что-то еще), в которой в данный момент находится курсор клавиатуры |
:hover |
ссылка, на которой в данный момент находится указатель мыши |
:active |
ссылка, на которой в данный момент происходит щелчок |
Следующие правила CSS определяют что:
a:link{
color: blue;
}
a:hover{
text-decoration: none;
}
a:visited{
color: gray;
}
a:active{
font-weight: bold;
}
Обратите внимание, если вы не определите эти правила в том же порядке, как они показаны выше, они могут работать не так, как вы ожидаете. Это обусловлено правилом специфичности, заставляющем более поздние правила в таблице стилей переопределять более ранние правила.
Можно выделить поле ввода, которое содержит активный мигающий курсор с помощью следующего правила:
input:focus {
border: 2px solid black;
background-color: lightgray;
}
Псевдо-элементы имеют два назначения. Прежде всего, можно использовать их для выбора первой буквы или первой строки текста в заданном элементе. Чтобы создать буквицу в начале каждого параграфа документа, можно использовать следующее правило:
p:first-letter {
font-weight: bold;
font-size: 250%
background-color: red;
}
Чтобы сделать первую строку каждого параграфа жирной, можно использовать следующее правило:
p:first-line {
font-weight: bold;
}
Вторым применением псевдо-элементов является генерация контента с помощью CSS, что является более сложной задачей. Можно использовать псевдо-элементы :before или :after для определения того, что содержимое должно быть вставлено перед или после элемента, который вы выбираете. Затем определяют то, что должно быть вставлено. В качестве простого примера можно использовать следующее правило для вставки декоративных изображений после каждой ссылки на страницу:
a:after{
content: " " url(flower.gif);
}
Можно также использовать функцию для вставки значений атрибутов элементов после элемента. Например, можно вставить цель каждой ссылки в документ в скобках с помощью следующего кода:
a:after{
content: "(" attr(href) ")";
}
Такие правила прекрасно подходят для таблиц URL, на которые ссылается страница.
Эти селекторы не поддерживаются в IE 6 (и более младших версиях).
Можно объединить несколько связанных свойств CSS в одно свойство, чтобы сэкономить время и свои усилия.
Рассмотрим следующее правило для полей (сокращения для заполнения и границы работают таким же образом):
div.foo {
margin-top: 1em;
margin-right: 1.5em;
margin-bottom: 2em;
margin-left: 2.5em;
}
Это правило можно записать короче:
div.foo {
margin: 1em 1.5em 2em 2.5em;
}
Сокращенное значение может иметь менее четырех значений, согласно приведенному ниже списку. Результаты упорядочены по числу предоставленных значений:
| Одно значение применяется ко всем четырем сторонам | margin: 2px; |
| Первое значение применяется к верху и низу, второ е к левому и правому краю | margin: 2px 5px;. |
| Первое и третье значения применяются к верху и низу соответственно, второе значение применяется к левому и правому краю | margin: 2px 5px 1px; |
Значения применяются к верху, правому краю, низу, и левому краю в соответствии с порядком исходного кода CSS |
| Граничные сокращения для различных свойств | Необходимо упомянуть еще, что можно даже задать значения свойств границ ( border-left-width: 2px; border-left-style: solid; border-left-color: black; |
Сокращения для некоторых свойств полей ( margin ), заполнения ( padding ) и границы ( border ) |
Все это действует таким же образом как было показано выше в разделе "Выбор между одиночным свойством и сокращенным значением". |
| Сокращения для шрифта | С помощью одной строки сокращения можно определить размер шрифта, толщину, стиль, семейство и высоту строки. Например, рассмотрим следующий код: font-size: 1.5em; line-height: 200%; font-weight: bold; font-style: italic; font-family: Georgia, "Times New Roman", serif Можно определить все это с помощью следующей строки: font: 1.5em/200% bold italic Georgia,"Times New Roman",serif; |
| Сокращение для фона | С помощью одной строки background-color: #000; background-image: url(image.gif); background-repeat: no-repeat; background-position: top left; Это можно представить с помощью следующего сокращения: background:#000 url(image.gif) no-repeat top left; |
| Сокращения для списков | В данном случае аналогичная история со list-style-type: circle; list-style-position: inside; list-style-image: url(bullet.gif); Это эквивалентно следующему: list-style: circle inside url(bullet.gif); |
Существует три способа применения CSS к документу HTML:
Можно применить таблицу стилей к элементу, используя атрибут style следующим образом:
<p style="background:blue; color:white; padding:5px;">Hello</p>
Внутри этого атрибута перечисляются все свойства CSS и их значения.
Преимущество строковых стилей состоит в том, что браузер будет вынужден использовать эти настройки. Все другие стили, определенные в других таблицах стилей, или даже вложенные в
Серьезна проблема у строковых стилей состоит в том, что они делают обслуживание стилей значительно труднее. Использование CSS предназначено для разделения представления документа и его структуры, но строковые стили делают именно обратное - рассеивают правила представления по документу.
Кроме проблем с обслуживанием, вы не получите никаких преимуществ в самой существенной части CSS: каскадировании.
style, как в следующем примере страницы:
<style type="text/css" media="screen">
p {
color:white;
background:blue;
padding:5px;
}
</style>
Преимущество вложенных таблиц стилей состоит в том, что не нужно добавлять атрибут style в каждый параграф - можно оформить их все с помощью одного единственного определения. Это означает также, что если потребуется изменить внешний вид всех параграфов, это можно будет сделать в одном единственном месте, однако все это, тем не менее, ограничено одним документом.
Внешние таблицы стилей означают размещение всех определений CSS в отдельном файле, сохраняя его с расширением файла CSS, и затем применение его к документам HTML, используя элемент link в заголовке документа. Например:
<link rel="stylesheet" href="styles.css" type="text/css" media="screen">
Внешние таблицы стилей позволяют хранить все определения оформления в одном единственном файле. Это означает, что можно вносить изменения на всем сайте, изменяя только один файл. Веб-браузер при этом может загрузить его один раз и затем кешировать для всех других документов, которые на него ссылаются, что уменьшает объем загружаемой информации.
Существует и другой способ импорта внешних таблиц стилей в файлы HTML - оператор @import. Он вставляется во вложенную таблицу стилей, таким же образом, как показанный выше вложенный код CSS. Синтаксис выглядит следующим образом:
<style type="text/css" media="screen">
@import url("styles.css");
другие операторы импорта или стили CSS.
</style>
Двумя фундаментальными концепциями CSS являются наследование и каскадирование. Наследование связано с тем, как элемент в разметке HTML наследует свойства своих элементов предков (в которых он содержится) и передает их своим потомкам, в то время как каскадирование имеет дело с объявлениями CSS, которые применяются к документу, и как конфликтующие правила переопределяют друг друга.
Наследование в CSS является механизмом, с помощью которого определенные свойства передаются от элемента предка его элементам потомкам.
Используя наследование можно, например, определить свойства шрифта для элементов html или body, и они будут унаследованы всеми другими элементами. Можно определить цвета фона и переднего плана для определенного контейнерного элемента, и цвет переднего плана будет автоматически унаследован элементами потомками в этом контейнере.
Каждый элемент в документе HTML будет наследовать все наследуемые свойства своего предка, за исключением html ), который не имеет предка.
Каскадирование - это механизм, который управляет конечным результатом, в случае когда несколько конфликтующих объявлений CSS применяются к одному элементу. Имеется три основные концепции, которые управляют порядком, в котором применяются объявления CSS:
Важность является наиболее значимой. Если два объявления имеют одинаковую важность, специфичность правил определяет, какое из них будет применяться. Если правила имеют одинаковую специфичность, то порядок исходного кода управляет результатом.
Важность объявления CSS зависит от того, где оно определено. Конфликтующие объявления будут применяться в следующем порядке, более поздние будут переопределять предыдущие:
Таблица стилей агента пользователя является встроенной таблицей стилей браузера. Каждый браузер имеет свои используемые по умолчанию правила, определяющие, как выводить различные элементы HTML, если никакой стиль не определен пользователем или дизайнером страницы. Например, непосещенные ссылки будут обычно выводиться синим цветом и подчеркнутыми.
Таблица стилей пользователя является таблицей стилей, которую определил пользователь. Не все браузеры поддерживают таблицы стилей пользователя, но они могут быть очень полезны, особенно для пользователей с некоторыми типами функциональных недостатков. Например, человек с дислексией может иметь таблицу стилей, которая определяет определенные шрифты и цвета, которые облегчают чтение.
Таблица стилей автора является тем, что обычно и называется "таблица стилей". Это таблица стилей, которую автор документа (или, более вероятно, дизайнер сайта) написал и присоединил (или включил).
Для того чтобы превратить обычное объявление в важное за ним необходимо разместить директиву !important. Как можно видеть, важные объявления в таблице стилей пользователя будут перекрывать все остальное, что вполне логично.
Используемое по умолчанию в браузере представление будет применяться только в том случае, если эти объявления не переопределены какими-либо правилами таблицы стилей пользователя или таблицы стилей автора, так как таблица стилей
Специфичность определяют как меру того, насколько конкретным является селектор некоторого правила. Селектор с низкой специфичностью может соответствовать многим элементам (такой как *, который соответствует каждому элементу в документе), в то время как селектор с высокой специфичностью может соответствовать только одному элементу на страницу (такой как #, который соответствует только элементу с id совпадающим с
Специфичность селектора можно легко вычислить. Если два или больше объявлений конфликтуют за данный элемент, и все объявления имеют одинаковую важность, то приоритет в правиле будет иметь объявление с наиболее специфичным селектором.
Специфичность имеет четыре компоненты, которые можно обозначить как a, b, c и d. Компонента a является наиболее разграничивающим, d - наименее.
a определяется очень просто: это 1 для объявления атрибута style, иначе это 0.b является числом селекторов id в селекторе (тех, которые начинаются с# ).c является числом d является числом типов элементов и псевдо-элементов в селекторе.После небольшого подсчета можно получить строку из этих четырех компонентов, определяющую специфичность для любого правила. Объявления CSS в атрибуте style не имеют селектора, поэтому их специфичность всегда будет 1,0,0,0.
В таблице приведены некоторые примеры.
| Селектор | a | b | c | d | Специфичность |
|---|---|---|---|---|---|
h1 |
0 | 0 | 0 | 1 | 0,0,0,1 |
.foo |
0 | 0 | 1 | 0 | 0,0,1,0 |
#bar |
0 | 1 | 0 | 0 | 0,1,0,0 |
html>head+body ul# |
0 | 1 | 2 | 5 | 0,1,2,5 |
Стоит отметить, что соединяющие символы (такие как > + и пробел) не влияют на специфичность селектора. Универсальный селектор (*) также не влияет на специфичность.
Имеется значительная разница в специфичности между селектором id и селектором атрибута, который ссылается на атрибут id. Хотя они соответствуют одному элементу, они имеют очень разную специфичность. Специфичность # будет 0,1,0,0, в то время как специфичность [id=" будет только 0,0,1,0.
Если два объявления влияют на один и тот же элемент, имеют одинаковую важность и одинаковую специфичность, то окончательное решение определяет порядок исходного кода. Объявление, которое появляется позже в таблицах стилей будет выигрывать у тех, которые встречаются раньше.
Если имеется единственная внешняя таблица стилей, то объявления в конце файла будут переопределять объявления, которые встречаются раньше в файле, если возникает конфликт. Конфликтующие объявления могут также возникать в различных таблицах стилей. В этом случае порядок, в котором присоединяются таблицы стилей, включаются или импортируются, управляют тем, какое объявление будет применяться.
Итак, наследование позволяет объявлять свойства на высокоуровневых элементах и разрешает этим свойствам распространяться вниз на все элементы потомки. Только некоторые свойства наследуются по умолчанию, но наследование можно реализовать принудительно с помощью ключевого слова inherit.
Каскадирование разрешает все конфликты, когда несколько объявлений влияют на данный элемент. Важные объявления будут переопределять менее важные. Среди объявлений с равной важностью специфичность правила управляет тем, какое из них будет применяться. И если все остальное будет совпадать, то порядок исходного кода определяет окончательный выбор.
Эта спецификация определяет Каскадные таблицы Стилей, уровень 2 ( ). - это язык таблиц стилей, позволяющий авторам и пользователям подключать стили (например, шрифты, пробелы и звуковые сигналы) в структурированные документы (например, документы HTML и приложения XML ). упрощает создание и обслуживание Web -сайта путем разделения структуры и стиля представления документов.
построен на основе , и, с очень небольшими исключениями, все таблицы стилей . поддерживает таблицы для конкретных носителей, так что авторы могут создавать представление своих документов для визуальных браузеров, звуковых устройств, принтеров, брайль-устройств, ручных портативных устройств и т.д. Данная спецификация поддерживает также позиционирование содержимого, загружаемые шрифты, отображение таблиц, возможности интернационализации, автоматические счетчики и нумерацию и некоторые свойства, относящиеся к пользовательскому интерфейсу.
Введение в стандарты
В то время как HTML структурирует документ и сообщает веб-браузеру, какую функцию имеет определенный элемент, CSS выдает браузеру инструкции о том, как отобразить определенный элемент - оформление, размещение пробелов и позиционирование.
CSS - одна из широкого спектра технологий, одобренных консорциумом W3C и получивших общее название "стандарты Web ".
| начало 1990-х годов | Различные браузеры имели свои стили для отображения веб страниц. HTML развивался очень быстро и был способен удовлетворить все существовавшие на тот момент потребности по оформлению информации, поэтому CSS не получил тогда широкого признания |
| 1994 | Появился термин "каскадные таблицы стилей" |
| 1996 | Консорциумом W3C была издана рекомендация |
| 1998 | Консорциумом W3C принята рекомендация |
| Сентябрь 2009 | Консорциумом W3C утверждена рабочая версия |
Эта рекомендация W3C была принята в 1996 году и откорректирована в 1999 году. Основные возможности, предоставляемых этой рекомендацией:
padding ) и внешние ( margin ) отступы и рамки. Также в спецификацию входили ограниченные средства по позиционированию элементов, такие как float и clear.Эта рекомендация W3C была принята в 1998 году. Она построена на с сохранением
Рабочая версия W3C от 8 сентября 2009 года. Построена на , в ней исправлен ряд ошибок.
До появления CSS оформление веб-страниц осуществлялось непосредственно внутри содержимого документа. Однако с появлением CSS стало возможным принципиальное разделение содержания и представления документа. За счет этого нововведения стало возможным легкое применение единого стиля оформления для массы схожих документов, а также быстрое изменение этого оформления.
Использование CSS дает следующие преимущества:
CSS -файл. В этом случае браузер загружает только структуру документа и данные, хранимые на странице, а представление этих данных загружается браузером только один раз и кешируется.CSS -файл.CSS -верстки можно сделать блок текста, который остальной текст будет обтекать (например для меню) или сделать так, чтобы меню было всегда видно при прокрутке страницы.Известны также и недостатки:
CSS.CSS -файл, но и теги HTML и код PHP, которые сложным и ненаглядным способом связаны с селекторами CSS, что иногда сводит на нет простоту применения единых файлов стилей и значительно удлиняет время редактирования и тестирования.Отображение элементов реализуется с помощью системы правил, которые определяют, какие элементы HTML должны быть дополнительно оформлены, и в каждом правиле перечислятся свойства (например, цвет, размер, шрифт, и т.д.) этих элементов HTML, которыми они будут манипулировать, какие значения будут для них заданы.
Таким образом, CSS не является ни языком программирования, ни языком разметки.
Базовой конструкцией в CSS является правило следующего вида:
селектор {
свойство1: значение;
свойство2: значение;
свойство3: значение;
}
Селектор определяет элементы HTML, к которым будет применяться правило, определяемые реальным названием элемента, например, body, или другими средствами, такими как значения атрибута class.
Фигурные скобки {} содержат пары свойство/значение, которые разделяются между собой точкой с запятой; свойства отделяются от своих соответствующих значений двоеточием.
Свойства определяют, что вы хотите сделать с выделенными элементами. Они могут задавать, например, цвет элемента, цвет фона, позицию, поля, заполнение, тип шрифта, и многое другое.
Значения являются теми конкретными характеристиками, которые вы хотите задать каждому свойству выделенных элементов. Эти значения зависят от свойства.
Свойства, которые влияют на положение, поля, ширину, высоту и т.д. могут измеряться в пикселях, em, процентах, сантиметрах или других аналогичных единицах измерения.
Рассмотрим конкретный пример:
p {
margin: 10px;
font-family: Times New Roman;
color: green;
}
Это правило выбирает HTML элемент p, и для каждого элемента p в документах HTML, которые используют этот код CSS, будет применяться это правило, если только не будут существовать применяемые к ним более конкретные правила, которые будут переопределять это правило. Данное правило влияет на свойства, которые определяют поля вокруг параграфа ( margin ), шрифт текста в параграфе ( ), и цвет этого текста ( color ). Поля задаются размером в 10 пикселей, шрифт задается как Times New Roman, а цвет текста задается как green.
Все множество подобных правил совместно формируют таблицу стилей. Кроме таких правил в CSS существуют и другие конструкции, например комментарии CSS, селекторы объединения в группу.
Комментарии добавляют, помещая их между символами /* и */. Комментарии могут охватывать несколько строк, и в этом случае браузер будет игнорировать эти строки:
Можно также объединить в группу различные селекторы. Предположим, что вы хотите применить одинаковое оформление к h2 и p, тогда можно было бы написать следующий CSS:
h2 {color: red}
p {color: red}
Однако, можно сократить код CSS, группируя селекторы вместе с помощью запятой - правила в скобках применяются к обоим селекторам:
h2, p {color: red}
Существует несколько различных селекторов, каждый из которых соответствуют различным частям разметки. Тремя наиболее общими селекторами, которые встречаются чаще всего, являются следующие:
| Синтаксис | Селектор | Описание |
|---|---|---|
p {} |
селектор элемента | соответствует всем элементам на странице с указанным названием (элементам p, в приведенном выше случае) |
example{} |
селектор класса | соответствует всем элементам, которые имеют атрибут class с указанным значением, так что пример выше будет соответствовать <p class="example">, <li class="example"> или <div class="example">, или любому другому элементу со значением class = "example". |
#example{} |
селектор id |
соответствует всем элементам, которые имеют атрибут id с указанным значением, так что пример выше будет соответствовать <p id="example">, <li id="example"> или <div id="example"> , или любому другому элементу со значением id = "example". Селекторы id не проверяют название никакого элемента, и можно иметь только один селектор для каждого id в документе HTML - они являются уникальными для каждой страницы. |
С помощью селекторов CSS, селекторов элемента, класса и id -селекторов можно реализовать многое, но это, конечно, не все возможные селекторы - существуют другие селекторы, которые позволяют выбирать элементы для стилевого оформления на основе более специфических критериев:
| Селекторы | Описание |
|---|---|
| можно использовать для выбора каждого элемента на странице | |
| позволяют выбирать элементы на основе их атрибутов | |
| если вы хотите выбрать определенные элементы, которые являются потомками других конкретных элементов | |
| Селекторы нижележащих | если вы хотите выбирать определенные элементы, которые являются нижележащими относительно других конкретных элементов (не просто прямыми потомками, но также расположенные ниже в дереве) |
| Селекторы смежных одноуровневых | если вы хотите выбрать только определенные элементы, которые следуют за другими определенными элементами |
| Псевдо-классы | эти селекторы позволяют оформить элементы не на основе того, чем является элемент, но на основе более сложных факторов, скажем, таких как состояние ссылки (если на нее, например, наведен курсор, или она уже была посещена). |
| Псевдо-элементы | эти селекторы позволяют оформить определенные части элементов, а не весь элемент (например, первую букву в этом элементе), они позволяют также вставлять содержимое перед или после определенных элементов |
Универсальные селекторы выбирают каждый элемент на странице для применения к ним стилей оформления. Например, следующее правило определяет, что для каждого элемента на странице должна быть добавлена сплошная черная граница толщиной 1 пиксель:
* {
border: 1px solid #000000;
}
Селекторы атрибутов позволяют выбирать элементы на основе содержащихся в них атрибутов. Например, можно выбрать каждый элемент img с атрибутом alt с помощью следующего селектора:
img[alt] {
border: 1px solid #000000;
}
Используя приведенный выше селектор, можно создать черную границу вокруг любого изображения, которое имеет атрибут alt, и оформить другие изображения ярко-красной.
Можно выбирать элементы также и по значению атрибута, а не только по названию атрибута. Следующее правило задает все изображения с атрибутом src со значением alert.gif:
img[src="alert.gif"] {
border: 1px solid #000000;
}
Значительно более полезной является возможность выбирать определенные части атрибутов, например, расширения файлов. CSS3 фактически вводит три новых типа
Можно использовать селектор потомка для выбора только определенных элементов, которые являются потомками других определенных элементов. Например, следующее правило задает цвет текста только тех strong элементов, которые являются потомками элементов h3, как green, но не для других элементов strong:
h3 > strong {
color: green;
}
IE 6 (и более младших версиях).
Селекторы нижележащих элементов очень похожи на
<div>
<em>Привет</em>
<p>и сразу же
<em>Пока</em>.
</p>
</div>
В этом фрагменте элемент div является предком всех других элементов. Он имеет двух потомоков, em и p. Элемент p имеет один элемент потомок, еще один em.
Эти селекторы позволяют выбирать определенный элемент, который следует непосредственно после другого определенного элемента на том же уровне в иерархии элементов. Например, если вы хотите выбрать элементы p, которые следуют непосредственно после элементов h2, но никакие другие элементы p, можно воспользоваться следующим правилом:
h2 + p {
...
}
Селекторы смежных одноуровневых элементов не поддерживаются в браузере IE 6 (и более младших версиях).
Псевдо-классы используются для обеспечения стилевого оформления не для элементов, а для различных состояний элементов. Наиболее обычным применением, которое можно встретить, является оформление состояний ссылок.
Список ниже представляет различные псевдо-классы и описание состояния ссылки, которое они выбирают:
:link |
обычное состояние ссылок по умолчанию, когда вы впервые их находите |
:visited |
ссылки, которые вы уже посетили в используемом в данный момент браузере |
:focus |
ссылка (или поле формы, или что-то еще), в которой в данный момент находится курсор клавиатуры |
:hover |
ссылка, на которой в данный момент находится указатель мыши |
:active |
ссылка, на которой в данный момент происходит щелчок |
Следующие правила CSS определяют что:
a:link{
color: blue;
}
a:hover{
text-decoration: none;
}
a:visited{
color: gray;
}
a:active{
font-weight: bold;
}
Обратите внимание, если вы не определите эти правила в том же порядке, как они показаны выше, они могут работать не так, как вы ожидаете. Это обусловлено правилом специфичности, заставляющем более поздние правила в таблице стилей переопределять более ранние правила.
Можно выделить поле ввода, которое содержит активный мигающий курсор с помощью следующего правила:
input:focus {
border: 2px solid black;
background-color: lightgray;
}
Псевдо-элементы имеют два назначения. Прежде всего, можно использовать их для выбора первой буквы или первой строки текста в заданном элементе. Чтобы создать буквицу в начале каждого параграфа документа, можно использовать следующее правило:
p:first-letter {
font-weight: bold;
font-size: 250%
background-color: red;
}
Чтобы сделать первую строку каждого параграфа жирной, можно использовать следующее правило:
p:first-line {
font-weight: bold;
}
Вторым применением псевдо-элементов является генерация контента с помощью CSS, что является более сложной задачей. Можно использовать псевдо-элементы :before или :after для определения того, что содержимое должно быть вставлено перед или после элемента, который вы выбираете. Затем определяют то, что должно быть вставлено. В качестве простого примера можно использовать следующее правило для вставки декоративных изображений после каждой ссылки на страницу:
a:after{
content: " " url(flower.gif);
}
Можно также использовать функцию для вставки значений атрибутов элементов после элемента. Например, можно вставить цель каждой ссылки в документ в скобках с помощью следующего кода:
a:after{
content: "(" attr(href) ")";
}
Такие правила прекрасно подходят для таблиц URL, на которые ссылается страница.
Эти селекторы не поддерживаются в IE 6 (и более младших версиях).
Можно объединить несколько связанных свойств CSS в одно свойство, чтобы сэкономить время и свои усилия.
Рассмотрим следующее правило для полей (сокращения для заполнения и границы работают таким же образом):
div.foo {
margin-top: 1em;
margin-right: 1.5em;
margin-bottom: 2em;
margin-left: 2.5em;
}
Это правило можно записать короче:
div.foo {
margin: 1em 1.5em 2em 2.5em;
}
Сокращенное значение может иметь менее четырех значений, согласно приведенному ниже списку. Результаты упорядочены по числу предоставленных значений:
| Одно значение применяется ко всем четырем сторонам | margin: 2px; |
| Первое значение применяется к верху и низу, второ е к левому и правому краю | margin: 2px 5px;. |
| Первое и третье значения применяются к верху и низу соответственно, второе значение применяется к левому и правому краю | margin: 2px 5px 1px; |
Значения применяются к верху, правому краю, низу, и левому краю в соответствии с порядком исходного кода CSS |
| Граничные сокращения для различных свойств | Необходимо упомянуть еще, что можно даже задать значения свойств границ ( border-left-width: 2px; border-left-style: solid; border-left-color: black; |
Сокращения для некоторых свойств полей ( margin ), заполнения ( padding ) и границы ( border ) |
Все это действует таким же образом как было показано выше в разделе "Выбор между одиночным свойством и сокращенным значением". |
| Сокращения для шрифта | С помощью одной строки сокращения можно определить размер шрифта, толщину, стиль, семейство и высоту строки. Например, рассмотрим следующий код: font-size: 1.5em; line-height: 200%; font-weight: bold; font-style: italic; font-family: Georgia, "Times New Roman", serif Можно определить все это с помощью следующей строки: font: 1.5em/200% bold italic Georgia,"Times New Roman",serif; |
| Сокращение для фона | С помощью одной строки background-color: #000; background-image: url(image.gif); background-repeat: no-repeat; background-position: top left; Это можно представить с помощью следующего сокращения: background:#000 url(image.gif) no-repeat top left; |
| Сокращения для списков | В данном случае аналогичная история со list-style-type: circle; list-style-position: inside; list-style-image: url(bullet.gif); Это эквивалентно следующему: list-style: circle inside url(bullet.gif); |
Существует три способа применения CSS к документу HTML:
Можно применить таблицу стилей к элементу, используя атрибут style следующим образом:
<p style="background:blue; color:white; padding:5px;">Hello</p>
Внутри этого атрибута перечисляются все свойства CSS и их значения.
Преимущество строковых стилей состоит в том, что браузер будет вынужден использовать эти настройки. Все другие стили, определенные в других таблицах стилей, или даже вложенные в
Серьезна проблема у строковых стилей состоит в том, что они делают обслуживание стилей значительно труднее. Использование CSS предназначено для разделения представления документа и его структуры, но строковые стили делают именно обратное - рассеивают правила представления по документу.
Кроме проблем с обслуживанием, вы не получите никаких преимуществ в самой существенной части CSS: каскадировании.
style, как в следующем примере страницы:
<style type="text/css" media="screen">
p {
color:white;
background:blue;
padding:5px;
}
</style>
Преимущество вложенных таблиц стилей состоит в том, что не нужно добавлять атрибут style в каждый параграф - можно оформить их все с помощью одного единственного определения. Это означает также, что если потребуется изменить внешний вид всех параграфов, это можно будет сделать в одном единственном месте, однако все это, тем не менее, ограничено одним документом.
Внешние таблицы стилей означают размещение всех определений CSS в отдельном файле, сохраняя его с расширением файла CSS, и затем применение его к документам HTML, используя элемент link в заголовке документа. Например:
<link rel="stylesheet" href="styles.css" type="text/css" media="screen">
Внешние таблицы стилей позволяют хранить все определения оформления в одном единственном файле. Это означает, что можно вносить изменения на всем сайте, изменяя только один файл. Веб-браузер при этом может загрузить его один раз и затем кешировать для всех других документов, которые на него ссылаются, что уменьшает объем загружаемой информации.
Существует и другой способ импорта внешних таблиц стилей в файлы HTML - оператор @import. Он вставляется во вложенную таблицу стилей, таким же образом, как показанный выше вложенный код CSS. Синтаксис выглядит следующим образом:
<style type="text/css" media="screen">
@import url("styles.css");
другие операторы импорта или стили CSS.
</style>
Двумя фундаментальными концепциями CSS являются наследование и каскадирование. Наследование связано с тем, как элемент в разметке HTML наследует свойства своих элементов предков (в которых он содержится) и передает их своим потомкам, в то время как каскадирование имеет дело с объявлениями CSS, которые применяются к документу, и как конфликтующие правила переопределяют друг друга.
Наследование в CSS является механизмом, с помощью которого определенные свойства передаются от элемента предка его элементам потомкам.
Используя наследование можно, например, определить свойства шрифта для элементов html или body, и они будут унаследованы всеми другими элементами. Можно определить цвета фона и переднего плана для определенного контейнерного элемента, и цвет переднего плана будет автоматически унаследован элементами потомками в этом контейнере.
Каждый элемент в документе HTML будет наследовать все наследуемые свойства своего предка, за исключением html ), который не имеет предка.
Каскадирование - это механизм, который управляет конечным результатом, в случае когда несколько конфликтующих объявлений CSS применяются к одному элементу. Имеется три основные концепции, которые управляют порядком, в котором применяются объявления CSS:
Важность является наиболее значимой. Если два объявления имеют одинаковую важность, специфичность правил определяет, какое из них будет применяться. Если правила имеют одинаковую специфичность, то порядок исходного кода управляет результатом.
Важность объявления CSS зависит от того, где оно определено. Конфликтующие объявления будут применяться в следующем порядке, более поздние будут переопределять предыдущие:
Таблица стилей агента пользователя является встроенной таблицей стилей браузера. Каждый браузер имеет свои используемые по умолчанию правила, определяющие, как выводить различные элементы HTML, если никакой стиль не определен пользователем или дизайнером страницы. Например, непосещенные ссылки будут обычно выводиться синим цветом и подчеркнутыми.
Таблица стилей пользователя является таблицей стилей, которую определил пользователь. Не все браузеры поддерживают таблицы стилей пользователя, но они могут быть очень полезны, особенно для пользователей с некоторыми типами функциональных недостатков. Например, человек с дислексией может иметь таблицу стилей, которая определяет определенные шрифты и цвета, которые облегчают чтение.
Таблица стилей автора является тем, что обычно и называется "таблица стилей". Это таблица стилей, которую автор документа (или, более вероятно, дизайнер сайта) написал и присоединил (или включил).
Для того чтобы превратить обычное объявление в важное за ним необходимо разместить директиву !important. Как можно видеть, важные объявления в таблице стилей пользователя будут перекрывать все остальное, что вполне логично.
Используемое по умолчанию в браузере представление будет применяться только в том случае, если эти объявления не переопределены какими-либо правилами таблицы стилей пользователя или таблицы стилей автора, так как таблица стилей
Специфичность определяют как меру того, насколько конкретным является селектор некоторого правила. Селектор с низкой специфичностью может соответствовать многим элементам (такой как *, который соответствует каждому элементу в документе), в то время как селектор с высокой специфичностью может соответствовать только одному элементу на страницу (такой как #, который соответствует только элементу с id совпадающим с
Специфичность селектора можно легко вычислить. Если два или больше объявлений конфликтуют за данный элемент, и все объявления имеют одинаковую важность, то приоритет в правиле будет иметь объявление с наиболее специфичным селектором.
Специфичность имеет четыре компоненты, которые можно обозначить как a, b, c и d. Компонента a является наиболее разграничивающим, d - наименее.
a определяется очень просто: это 1 для объявления атрибута style, иначе это 0.b является числом селекторов id в селекторе (тех, которые начинаются с# ).c является числом d является числом типов элементов и псевдо-элементов в селекторе.После небольшого подсчета можно получить строку из этих четырех компонентов, определяющую специфичность для любого правила. Объявления CSS в атрибуте style не имеют селектора, поэтому их специфичность всегда будет 1,0,0,0.
В таблице приведены некоторые примеры.
| Селектор | a | b | c | d | Специфичность |
|---|---|---|---|---|---|
h1 |
0 | 0 | 0 | 1 | 0,0,0,1 |
.foo |
0 | 0 | 1 | 0 | 0,0,1,0 |
#bar |
0 | 1 | 0 | 0 | 0,1,0,0 |
html>head+body ul# |
0 | 1 | 2 | 5 | 0,1,2,5 |
Стоит отметить, что соединяющие символы (такие как > + и пробел) не влияют на специфичность селектора. Универсальный селектор (*) также не влияет на специфичность.
Имеется значительная разница в специфичности между селектором id и селектором атрибута, который ссылается на атрибут id. Хотя они соответствуют одному элементу, они имеют очень разную специфичность. Специфичность # будет 0,1,0,0, в то время как специфичность [id=" будет только 0,0,1,0.
Если два объявления влияют на один и тот же элемент, имеют одинаковую важность и одинаковую специфичность, то окончательное решение определяет порядок исходного кода. Объявление, которое появляется позже в таблицах стилей будет выигрывать у тех, которые встречаются раньше.
Если имеется единственная внешняя таблица стилей, то объявления в конце файла будут переопределять объявления, которые встречаются раньше в файле, если возникает конфликт. Конфликтующие объявления могут также возникать в различных таблицах стилей. В этом случае порядок, в котором присоединяются таблицы стилей, включаются или импортируются, управляют тем, какое объявление будет применяться.
Итак, наследование позволяет объявлять свойства на высокоуровневых элементах и разрешает этим свойствам распространяться вниз на все элементы потомки. Только некоторые свойства наследуются по умолчанию, но наследование можно реализовать принудительно с помощью ключевого слова inherit.
Каскадирование разрешает все конфликты, когда несколько объявлений влияют на данный элемент. Важные объявления будут переопределять менее важные. Среди объявлений с равной важностью специфичность правила управляет тем, какое из них будет применяться. И если все остальное будет совпадать, то порядок исходного кода определяет окончательный выбор.
Эта спецификация определяет Каскадные таблицы Стилей, уровень 2 ( ). - это язык таблиц стилей, позволяющий авторам и пользователям подключать стили (например, шрифты, пробелы и звуковые сигналы) в структурированные документы (например, документы HTML и приложения XML ). упрощает создание и обслуживание Web -сайта путем разделения структуры и стиля представления документов.
построен на основе , и, с очень небольшими исключениями, все таблицы стилей . поддерживает таблицы для конкретных носителей, так что авторы могут создавать представление своих документов для визуальных браузеров, звуковых устройств, принтеров, брайль-устройств, ручных портативных устройств и т.д. Данная спецификация поддерживает также позиционирование содержимого, загружаемые шрифты, отображение таблиц, возможности интернационализации, автоматические счетчики и нумерацию и некоторые свойства, относящиеся к пользовательскому интерфейсу.
Введение в стандарты
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.