Учебник CSS 3. Статья «Каскадность в CSS»
В этой статье учебника мы узнаем почему таблицы стилей называют каскадными, как происходит взаимодействие стилей между собой внутри документа, познакомимся с системой приоритетов и конечно рассмотрим необходимые для понимания этой темы примеры.
Прежде всего, что такое каскадность? Каскадность – это правила, по которым определяется какие стилевые свойства задаются браузером элементам на странице (последовательность применения стилей к определённым элементам и разрешение при необходимости, возникающих конфликтов).
Давайте рассмотрим следующее изображение, на нем отображены основные источники информации о стилях, которые образуют каскад:
Рис. 30 Основные источники информации о стилях.К основным источникам информации о стилях относятся:
- Встроенные стили браузера по умолчанию.
- Стили, заданные автором документа, их в свою очередь можно указать в трех местах:
- Внешний CSS файл (с использованием элемента <link>, который размещается внутри элемента <head>).
- В теле документа (в настоящее время разрешается размещать стили только в начале документа — стили помещаются внутри парного тега <style>, который в свою очередь должен находиться внутри элемента <head>).
- Внутри элемента (стили, которые задаются с использованием глобального HTML атрибута style).
- Стили, заданные пользователем (в некоторых современных браузерах возможность определить свои стили для конкретного сайта доступна встроенными средствами в настройках, для других требуется расширение для браузера). Это позволит стилизовать какой-то сайт по своему усмотрению и вкусу, или убрать с него какие-то блоки, которые Вам не хотелось бы видеть.
Наименьшим приоритетом из этого списка обладают встроенные стили браузера, а для пользовательских устанавливается наивысший приоритет, но это нас не должно интересовать, ведь кто как хочет, так и стилизует, и это не предмет этой статьи учебника.
Главное надо понять, что если на странице применяется несколько стилей к одному элементу, то браузер объединит свойства этих стилей, при условии, что они не конфликтуют между собой (имеют различные значения для однотипных свойств). А если конфликтуют?
Давайте перейдем к практической части.
Предположим, что у нас есть абзац (элемент <p>), в котором указана определенная гиперссылка (элемент <a>). HTML код может выглядеть следующим образом:
<p class = "main"> Для перехода к основной статье нажмите <a href = "#"> вот на это место. </a></p>
На нашу страницу добавим следующие стили:
a { /* используем селектор типа */ color: brown; /* устанавливаем цвет текста */ } p a { /* используем селектор потомков */ font-weight: bold; /* устанавливаем жирное начертание шрифта */ } .main a { /* используем селектор потомков */ background-color: orange; /* задаем цвет заднего фона */ text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */ }
Создадим разметку и добавим стили в наш документ:
<!DOCTYPE html> <html> <head> <meta charset = "UTF-8"> <title>Каскадность в CSS</title> <style> a { /* используем селектор типа */ color: brown; /* устанавливаем цвет текста */ } p a { /* используем селектор потомков */ font-weight: bold; /* устанавливаем жирное начертание шрифта */ } .main a { /* используем селектор потомков */ background-color: orange; /* задаем цвет заднего фона */ text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */ } </style> </head> <body> <p class = "main">Для перехода к основной статье нажмите <a href = "#"> вот на это место. </a></p> </body> </html>
Результат нашего примера:
Рис. 30а Каскадность в CSS.Давайте рассмотрим какие стили были применены к элементу <a>:
Рис. 30б Применение стилей к элементу.В данном примере вы можете увидеть, что все три наших селектора с различными стилями были применены к элементу <a>, а встроенные стили элемента — цвет и декорирование текста (нижнее подчеркивание) были заменены на авторские стили (стили автора документа) по той причине, что они имеют больший приоритет.
Система приоритетов в CSS
Давайте рассмотрим пример, где не всё так очевидно и однозначно. К примеру, с использованием свойства font-family зададим элементу <a> различный тип шрифта с использованием аналогичных селекторов:
<!DOCTYPE html> <html> <head> <meta charset = "UTF-8"> <title>Конфликты стилей в CSS</title> <style> a { /* используем селектор типа */ color: brown; /* устанавливаем цвет текста */ font-family: Arial; /* устанавливаем тип шрифта Arial */ } p a { /* используем селектор потомков */ font-weight: bold; /* устанавливаем жирное начертание шрифта */ font-family: Helvetica; /* устанавливаем тип шрифта Helvetica */ }.main a { /* используем селектор потомков */ background-color: orange; /* задаем цвет заднего фона */ text-decoration: none; /* убираем декорирование текста (нижнее подчеркивание) */ font-family: Courier; /* устанавливаем тип шрифта Courier */ } </style> </head> <body> <p class = "main">Для перехода к основной статье нажмите <a href = "#"> вот на это место. </a></p> </body> </html>
Результат нашего примера:
Рис. 31 Пример конфликтования стилей.Давайте рассмотрим какой шрифт получил элемент <a>:
Рис. 31a Выбор типа шрифта при конфликте стилей.Обратите внимание, что для нашего элемента был установлен шрифт Courier. Как мы видим в «инструментах разрабочика» браузера Chrome этот шрифт выбран из селектора потомков в котором используется как селектор класса, так и селектор типа ( .main a), а в остальных селекторах тип шрифта для элемента перечеркнут. Но почему?
Я уже обращал Ваше внимание на тот факт, что основное правило механизма каскадности — побеждает тот, у кого установлен самый явно определенный стиль. Для этих целей в CSS существует своя система приоритетов, которая основана на присвоении значений в пунктах для каждого типа селекторов, чем выше это значение, тем выше его значимость:
- Селектор типа, псевдоэлементы — 1 пункт.
- Селектор класса, псевдоклассы — 10 пунктов.
- Id селектор — 100 пунктов.
- Встроенный (inline) стиль (стиль задается в самом элементе с использованием глобального HTML атрибута style) — 1000 пунктов.
Давайте перейдем к следующему примеру в котором рассмотрим как работает система приоритетов:
<!DOCTYPE html> <html> <head> <meta charset = "UTF-8"> <title>Работа системы приоритетов в CSS</title> <style>#id_invite { /* id селектор — 100 пунктов */ color: red; /* устанавливаем цвет текста красный */ } .class_invite { /* селектор класса — 10 пунктов */ color: blue; /* устанавливаем цвет текста синий */ } p { /* селектор типа — 1 пункт */ color: green; /* устанавливаем цвет текста зеленый */ } </style> </head> <body> <!-- устанавливаем цвет текста внутри элемента span зеленый (inline стиль) --> <p class = "class_invite" id = "id_invite">Просто <span style = "color: green;">добавь</span> воды.</p> </body> </html>
В данном примере для элемента <p> был установлен красный цвет текста благодаря id селектору, который имеет более высокое значение в пунтах чем другие селекторы (100). Кроме того, для демонстрации системы приоритетов мы применили встроенный (inline) стиль для элемента <span> и установили для него зеленый цвет шрифта. Обратите внимание, что на изображении, все значения селекторов перечеркнуты, так как встроенный стиль имеет самое высокое значение в пунктах ( 1000).
Рис 32 Пример системы приоритетов в CSS.Чтобы подсчитать специфичность комбинированных селекторов необходимо их просто сложить между собой, например:
#id_invite a { /* id селектор (100 пунктов) + селектор типа (1 пункт) = 101 пункт */ блок объявлений; } p:first-letter { /* селектор типа (1 пункт) + псевдоэлемент (1 пункт) = 2 пункта */ блок объявлений; } .main:first-child { /* селектор класса (10 пунктов) + псевдокласс (10 пунктов) = 20 пунктов */ блок объявлений; }
Отмена значимости стилей
В некоторых случаях, два стиля могут иметь одинаковый приоритет (одинаковое количество пунктов), что доставляет сильную головную боль по той причине, что браузер в этом случае выбирает последний определенный стиль в таблице стилей, что может не соответствовать вашим ожиданиям. Если вы поменяете местами конфликтующие стили, то действовать будет тот, который будет указан ниже в таблице стилей. Старайтесь избегать подобных ситуаций и запомните этот момент. Эти знания помогут Вам сэкономить большое количество времени.
В CSS предусмотрена возможность отменить значимость стилей (не учитывать количество пунктов). Для этого необходимо добавить к значению CSS свойства ключевое слово !important.
Давайте рассмотрим пример использования ключевого слова !important:
<!DOCTYPE html> <html> <head> <meta charset = "UTF-8"> <title>Пример отмены значимости стилей</title> <style> a.rtfm { /* селектор типа (1 пункт) + селектор класса (10 пунков) = 11 пунктов */ color: green; /* устанавливаем цвет текста зеленый */ } a { /* селектор типа (1 пункт) */ color: red !important; /* отменяем значимость стилей и устанавливаем цвет текста красный */ } </style> </head> <body> <a class = "rtfm" href = "http://google.com">Найти</a> </body> </html>
В этом примере с использованием ключевого слова !important мы отменили значимость стилей и установили цвет текста для гиперссылки красный. В данном случае если бы мы не использовали ключевое слово !important, то цвет бы остался зеленым по той причине, что он имеет большую значимость (задан с использованием селектора класса).
Результат нашего примера:
Рис. 33 Пример отмены значимости стилей.Обратите внимание, что !important указывается в конце каждого свойства и действует только на одно свойство, а не на весь блок объявлений!
Если вы указали значение !important для двух однотипных свойств различных стилей, то в этом случае браузер рассматривает их по принципу правил значимости (приоритет отдаётся более значимому свойству). Старайтесь избегать подобных ситуаций.
Сброс и нормализация встроенных стилей.
Ещё один необходимый метод для грамотного построения кроссбраузерных страниц — это необходимость сброса встроенных в браузер внутренних стилей (сброс стандартных стилей браузера). Другими словами, независимо какой браузер у пользователей, которые посещают Ваш сайт, отображение должно быть в одном стиле — с одинаковыми отступами, границами и форматированием.
Для этого существуют различные шаблоны, которые сбрасывают внутренние стили (reset.css). Как правило, шаблоны адаптируются под себя (под Ваши нужды) и служат для удаления полей и отступов, устанавливая например 100% размер шрифта, убирая выделения полужирным шрифтом, устанавливают пространство между строками в абзаце, убирают маркеры в списках и тому подобное.
В настоящее время часто в своей работе используют альтернативу традиционному reset.css (сбросу внутренних стилей), нормализовывая таблицы стилей — normalize.css.
Данный проект (normalize.css) появился после глубокого исследования различий между изначальными стилями браузера под руководством Николаса Галахера. Основные задачи normalize.css заключаются в том, чтобы сохранить полезные настройки браузера, а не стирать их, и при этом нормализовать стили для широкого круга HTML элементов.
Как вы понимаете, normalize.css значительно отличается от reset.css. Впоследствии, я Вам рекомендую попробовать в своей работе оба метода, чтобы определиться, соответствует ли конкретный метод вашим предпочтениям в разработке.
Пример CSS reset — http://meyerweb.com/eric/tools/css/reset/Проект normalize css — https://necolas.github.io/normalize.css/
Вопросы и задачи по теме
Перед тем как перейти к следующей статье ответьте на следующие вопросы:
- подсчитайте специфичность комбинированного селектора:
.main a { блок объявлений; }
Показать ответ.main a { /* селектор класса (10 пунктов) + селектор типа (1 пункт) = 11 пунктов */ блок объявлений; }
- подсчитайте специфичность комбинированного селектора:
#main #section { блок объявлений; }
Показать ответ#main #section { /* id селектор (100 пунктов) + id селектор (100 пунктов) = 200 пунктов */ блок объявлений; }
- подсчитайте специфичность комбинированного селектора:
table.header tr:hover { блок объявлений; }
Показать ответtable.header tr:hover { /* селектор типа (1 пункт) + селектор класса (10 пунктов) + селектор типа (1 пункт) + псевдокласс (10 пунктов) = 22 пункта */ блок объявлений; }
Каскадность и приоритетность в CSS
В данном посте мы разбирем такую особенность CSS, как каскадность и приоритетность. Из урока по наследованию вы наверняка помните, что для одного и того же элемента веб-страницы может быть применено несколько правил. Значит, браузер должен как-то решить, какое правило будет наиболее приоритетным для конкретной ситуации. А решает он это с помощью специальной системы, которая, как неудивительно называется каскадностью.
Тема эта очень важна и ее правильное понимание является необходимым условием для продуктивной работы с каскадными таблицами стилей. Поэтому постарайтесь максимально сконцентрироваться в ближайшие 20 минут, чтобы с первого раза освоить материал.
Видеоверсия:
[iframe align=»center» mode=»normal» autoplay=»no» maxwidth=»1280″]
Объединение унаследованных стилей
Так уж сложилось, что вложенные элементы обычно наследуют свойства у своих родителей и предков. Рассмотрим следующую ситуацию:
body { font-family: Arial; }
p { font-size: 16px; }
em { color: blue; }
В примере выше мы задали семейство шрифта общему предку (body), размер — абзацам (p), и цвет — тегу em. На самой веб-странице мы увидим содержимое тега em шрифтом в 16px, семейства Arial и синего цвета. В нашем случае шрифт и размер были унаследованы от предка и родителя соответственно.
Значит, вложенные элементы могут наследовать неконфликтующие свойства. Но что произойдет, если мы зададим одно и то же свойство с разными значениями родителю и предку?
Преимущество имеет ближайший родительский элемент
Рассмотрим следующие правила оформления для главного тега страницы и всех абзацев:
body { color: green; }
p { color: red; }
Как вы думаете, каким цветом окрасится содержимое тега em, зеленым или красным? Конечно же красным (red), так как приоритет при наследовании всегда имеет свойство ближайшего родительского элемента. Учитывая вложенность тегов em в абзацы, их отображение красным цветом не вызывает удивления.
Приоритет всегда отдается конкретному стилю
А что будет, если к предыдущим правилам оформления мы зададим еще один? Например, цвет для того же тега em.
body { color: green; }
p { color: red; }
em { color: blue; }
В этом случае, вполне логично, содержимое тега окрашивается в синий цвет (blue), так как для него есть конкретный определяющий стиль. Это значит, что конкретный стиль имеет приоритет над унаследованными.
При выборе браузером стиля для элемента веб-страницы выбор всегда падает в сторону конкретного стиля. Если его нет, то браузер выбирает стиль ближайшего родительского элемента и применяет его на дочерние.
Распределение приоритетности между конкретными стилями CSS
После уяснения вышезатронутых принципов каскадности, непроизвольно возникает вопрос — «Как распределяются приоритеты между конкретными правилами?» Ведь к одному и тому же элементу можно обращаться разными способами.
Например, через селектор тегов, классов и идентификаторов. Рассмотрим следующий пример, в котором у нас есть один абзац на странице, имеющий класс ‘aly’ и идентификатор ‘main’. Для этого абзаца мы придадим разные цвета через соответствующие селекторы.
p { color: green; }
.aly { color: red; }
#main { color: blue; }
Какое же правило возьмет верх? Ведь все они обращены к одному и тому же элементу. Не знаю, удивитесь вы или нет, но наш единственный абзац будет окрашен в синий цвет. А происходит это потому, что каждый вид обращения имеет свой уровень важности. Он хорошо показан на иллюстрации ниже.
приоритетность в CSSКак видно из иллюстрации, правило применяемое через селектор тегов имеет 1 балл значимости, класс — 10, а идентификатор — 100 баллов. Самая высокая значимость присуждается встроенным стилям, имеющим 1000 единиц важности. Встроенный стиль представляет из себя CSS правило, находящееся внутри html разметки:
<p>Текст абзаца...</p>
При наличии подобного встроенного стиля, абзац будет окрашен в зеленый цвет (green). Однако, использование подобной техники оформления является нежелательным по двум причинам:
- html разметка не предназначена для оформления;
- могут возникнуть трудности при изменении оформления элемента, имеющего встроенный стиль, ведь любые обращения к ней через внешнюю таблицу стилей ничего не даст.
Приоритетность не имеет значения в случае наследуемых свойств.
Иногда принцип приоритетности может ввести человека в заблуждение. Например, когда элемент наследует стили у родителя, вызванного через селектор идентификаторов.
#main{ color: black; }
p { color: green; }
Из примера выше мы видим, что абзацы внутри блочного элемента с идентификатором ‘main’ будут окрашены в зеленый цвет (green). Хотя, на первый взгляд может показаться что правило для ‘#main’ более важно, нужно помнить что оно обращено к div`у, а не напрямую к абзацу. И здесь срабатывает правило о более конкретном стиле, согласно которому абзацы будут окрашены в зеленый цвет. Словом, приоритетность не наследуется потомками.
В таблице ниже вы можете увидеть пример того, как могут суммироваться баллы для разных селекторов.
таблица приоритетностей в CSSПоследний стиль сродни окончательному решению
Может случиться так, что правила для одного и того же элемента могут иметь одинаковый балл по приоритетности. Как в этом случае поступит браузер? Какому CSS правилу он отдаст предпочтение? Рассмотрим на примере ниже.
.alive strong{ color: black; }
p .bold { color: green; }
У нас есть два форматирующих правила для одного и того же тега strong с классом bold, находящийся внутри абзаца с классом alive. Оба стиля имеют одинаковую важность — 11 баллов. Какому правилу браузер отдаст пальму первенства?
В равной схватке побеждает второе правило, так как оно указано последним, читай — является самой актуальной. Но что если у нас есть стиль, который мы хотим наверняка определить для тега strong?
У нас может быть таблица стилей внушительных размеров, по причине чего становится довольно сложно использовать селектор с правильной приоритетностью, не говоря уже о возможности наличия где-нибудь встроенных стилей. Для решения данной задачи мы можем воспользоваться значением !important. Ее необходимо прописать к необходимому свойству.
.alive strong{ color: black !important; }
При использовании такой записи все остальные свойства цвета будут игнорироваться браузером. Однако, нужно использовать данный прием с осторожностью, ведь применив его один раз, вы теряете контроль над данным свойством в будущем, пока не избавитесь от этого значения (!important).
Хитрость: гибкое использование правила последней записи
Одной из сложностей создания больших сайтов является необходимость использовать нестандартные стили для определенных страниц. То есть, для одних и тех же элементов разных страниц может понадобится использовать разные стили. Но как этого добиться?
Как вариант можно использовать правило последней (самой актуальной) записи. Например, для такой «нестандартной» страницы можно подключить отдельную таблицу стилей, содержащую особенные правила форматирования. Только нужно не забыть подключить этот файл после основной таблицы стилей, чтобы отменить предыдущие правила. Вот вам и хитрость:-)
Опасность частого использования селекторов по ID
Советую вам с осторожностью использовать селектор идентификаторов. Наличие у неё большого балла приоритетности может стать причиной проблем оформления вашего сайта. Обратите внимание на стили ниже.
#main p{ color: black; }
p.letter { color: green; }
Согласно первому правилу мы задаем черный цвет для всех абзацев внутри блока с идентификатором ‘main’. Затем мы хотим выделить абзац с классом ‘letter’ отдельным цветом. Он находится внутри блока с идентификатором ‘main’.
Но сделать это не получится по той причине, что первый стиль имеет 101 балл значимости, а второй всего лишь 11. Это пример того, какие трудности могут быть при использовании селектора по идентификатору. Можно конечно, использовать другую запись:
#main .letter { color: green; }
Однако, проблему она решает лишь частично, так как действует только на абзацы внутри блока с идентификатором ‘main’. На абзацы с классом ‘letter’, находящиеся в других блоках она не подействует. Посему, будьте внимательны.
Итак, на этом урок по каскадности можно считать завершенным. Если есть вопросы или мысли по данной теме, буду рад видеть их в комментариях. Надеюсь, данный урок по CSS был для вас полезен. Если это так:
- Сделайте репост данной статьи в социальных сетях, чтобы больше людей получили от нее пользу;
- [popup_trigger tag=»span»]Подписывайтесь[/popup_trigger] на мою рассылку, чтобы не пропустить полезные и интересные публикации на блоге.
На этом я с вами не прощаюсь. Спасибо за внимание и до встречи в следующих публикациях!
Cascade — CSS | MDN
Каскадность это алгоритм, который определяет как совмещать и сочетать значения свойств происходящих из различных источников(CSS правила могут располагаться как в самом веб-документе, так и во внешних файлах). Данный алгоритм лежит в основе CSS, как можно понять из его названия: Cascading Style Sheets(Каскадные Таблицы Стилей). Данная статья объясняет что такое каскадность, порядок в котором определяется какие свойства будут в конечном итоге выполнены и как это затрагивает вас, веб разработчика.
Only CSS declarations, that is property/value pairs, participate in the cascade. That means that at-rules containing entities other than declarations, like @font-face
containing descriptors don’t participate in the cascade. In these case, only the at-rule as the whole participates in the cascade; here the @font-face identified by its font-family
descriptor. If several @font-face
with the same descriptor are defined, only the most adequate @font-face
, as a whole, is considered.
If the declarations contained in most at-rules participate in the cascade, like declarations contained in @media
, @documents
, or @supports
, declarations contained in @keyframes
doesn’t. Like for @font-face
, only the at-rule as a whole is selected via the cascade algorithm.
Finally note that @import
and @charset
obey specific algorithms and aren’t affected by the cascade algorithm.
The CSS cascade algorithm wants to select CSS declarations to set the correct value for CSS properties. CSS declarations originate from different origins:
- The browser has a basic style sheet that gives a default style to any document. These style sheets are named user-agent stylesheets. Some browsers uses actual style sheets to perform this, while others simulate them in code, but both cases should be indetectable. Some browsers also allow users to modify the user-agent stylesheet. Although some constraints on user-agent stylesheets are set by the HTML specification, browsers still have a lot of latitude: that means that significant differences exist from one browser to another. To ease their development and lower the basic ground on which to work, Web developers often use a CSS reset style sheet, forcing common properties values to a known state.
- The author of the Web page define styles for the document. These are the most common style sheets. Most of the time several of them are defined and they make the look and feel of the Web site — its theme.
- The reader, the user of the browser, may have a custom style sheet to tailor its experience.
Though style sheets come from these different origins, they overlap in scope: the cascade algorithm defines how they interact.
The cascading algorithm determines how to find the value to apply for each property for each document element.
- It first filters all the rules from the different sources to keep only the rules that apply to a given element. That means rules whose selector matches the given element and which are part of an appropriate media at-rule.
- Then it sorts these rules according to their importance, that is, whether or not they are followed by
!important
, and by their origin. The cascade is in ascending order, which means that!important
values from a user-defined style sheet have precedence over normal values originated from a user-agent style sheet:
* based on w3.org CSS3 specsOrigin Importance 1 user agent normal 2 user normal 3 author normal 4 CSS Animations see below 5 author !important
6 user !important
7 user agent* !important
- In case of equality, the specificity of a value is considered to choose one or the other.
CSS Animations, using @keyframes
at-rules defines animations between states. Keyframes don’t cascade, meaning that at any time CSS takes values from one single @keyframes
and never mixes several of them.
When several keyframes are appropriate, it chooses the latest defined in the most important document, but never combined all together.
Also note that values within @keyframes
at-rules overwrite all normal values but are overwritten by !important
values.
User-agent CSS:
li { margin-left: 10px }
Author CSS 1:
li { margin-left: 0 } /* This is a reset */
Author CSS 2:
@media screen { li { margin-left: 3px } } @media print { li { margin-left: 1px } }
User CSS:
.specific { margin-left: 1em }
HTML:
<ul> <li>1<sup>st</sup></li> <li>2<sup>nd</sup></li> </ul>
In this case, declarations inside li
and .specific
rules should apply. No declaration is marked as !important
so the precedence order is author style sheets before user style sheets or user-agent stylesheet.
So three declarations are in competition:
margin-left: 0
margin-left: 3px
margin-left: 1px
The last one is ignored (on a screen), and the two first have the same selector, hence the same specificity: it is the last one that is then selected:
margin-left: 3px
Note that the declaration defined in the user CSS, though having a greater specifity, is not chosen as the cascade algorithm is applied before the specifity algorithm.
- The very simple introduction of cascading in the CSS Tutorial.
- Ключевые концепции CSS: Синтаксис CSS, @-правила, комментарии, специфичность и наследование, блочная модель, режимы компоновки и модели визуального форматирования, схлопывание отступов, начальные, вычисленные, решённые, указанные, используемые и действительные значения. Синтаксис определения значений, сокращённые свойства и замещаемые элементы.
CSS3 | Каскадность стилей
Каскадность стилей
Последнее обновление: 21.04.2016
Когда к определенному элементу применяется один стиль, то все относительно просто. Однако если же к одному и тому же элементу применяется сразу несколько различных стилей, то возникает вопрос, какой же из этих стилей будет в реальности применяться?
В CSS действует механизм каскадности, которую можно определить как набор правил, определяющих последовательность применения множества стилей к одному и тому же элементу.
К примеру, у нас определена следующая веб-страница:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Каскадность стилей в CSS3</title> <style> .redLink {color: red;} /* красный цет текста */ .footer a {font-weight: bold;} /* выделение жирным */ a {text-decoration: none;} /* отмена подчеркивания ссылки */ </style> </head> <body> <p>Для просмотра подробной информации пройдите по ссылке: <a href="index.php">Основы CSS 3</a></p> </body> </html>
В CSS определено три стиля и все они применяются к ссылке.
Если к элементу веб-страницы применяется несколько стилей, которые не конфликтуют между собой, то браузер объединяет их в один стиль.
Так, в данном случае, все три стиля не конфликтуют между собой, поэтому все эти стили будут применяться к ссылке:
Если же стили конфликтуют между собой, например, определяют разный цвет текста, то в этом случае применяется сложная система правил для вычисления значимости каждого стиля. Все эти правила описаны в спецификации по CSS: Calculating a selectors specificity. Вкратце разберем их.
Для определения стиля к элементу могут применяться различные селекторы, и важность каждого селектора оценивается в баллах. Чем больше у селектора пунктов, тем он важнее, и тем больший приоритет его стили имеют над стилями других селекторов.
Селекторы тегов имеют важность, оцениваемую в 1 балл
Селекторы классов, атрибутов и псевдоклассов оцениваются в 10 баллов
Селекторы идентификаторов оцениваются в 100 баллов
Встроенные inline-стили (задаваемые через атрибут
style
) оцениваются в 1000 баллов
Например:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Каскадность стилей в CSS3</title> <style> #index {color: navy;} /* темно-синий цет текста */ .redLink {color: red; font-size: 20px;} /* красный цет текста и высота шрифта 20 пикселей */ a {color: black; font-weight: bold;} /* черный цет текста и выделение жирным */ </style> </head> <body> <a href="index.php">Основы CSS 3</a> </body> </html>
Здесь к ссылке применяется сразу три стиля. Эти стили содержат два не конфликтующих правила:
font-size: 20px; font-weight: bold;
которые устанавливают высоту шрифта 20 пикселей и выделение ссылки жирным. Так как каждое из эти правил определено только в одном стиле, то в итоге они будут суммироваться и применяться к ссылке без проблем.
Кроме того, все три стиля содержат определение цвета текста, но каждый стиль определяет свой цвет текста. Так как селекторы идентификаторов имеют больший удельный вес, то в конечном счете будет применяться темно-синий цвет, задаваемый селектором:
#index {color: navy;}
Если селектор является составным, то происходит сложение баллов всех входящих в селектор подселекторов. Так, рассмотрим следующий пример:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Каскадность стилей в CSS3</title> <style> a {font-size: 18px;} .nav li a {color: red;} /* красный цет текста */ #menu a {color: navy;} /* темно-синий цет текста */ .nav .menuItem {color: green;} /* зеленый цет текста */ a.menuItem:not(.newsLink) {color: orange;} /* оранжевый цет текста */ div ul li a {color: gray; } /* серый цет текста */ </style> </head> <body> <div> <ul> <li><a>Главная</a></li> <li><a>Форум</a></li> <li><a>Блог</a></li> <li><a>О сайте</a></li> </ul> </div> </body> </html>
В CSS определено аж пять различных селекторов, которые устанавливают цвет ссылок. В итоге браузер выберет селектор #menu a
и окрасит ссылки
в темно-синий цвет. Но почему, на каком основании браузер выберет этот селектор?
Рассмотрим, как у нас будут суммироваться баллы по каждому из пяти селекторов:
Селектор | Идентификаторы | Классы | Теги | Сумма |
.nav li a | 0 | 1 | 2 | 12 |
#menu a | 1 | 0 | 1 | 101 |
.nav .menuItem | 0 | 2 | 0 | 20 |
a.menuItem:not(.newsLink) | 0 | 2 | 1 | 21 |
div ul li a | 0 | 0 | 4 | 4 |
Итак, мы видим, что для селектора #menu a
в колонке сумма оказалось больше всего баллов — 101. То есть в нем 1 идентификатор (100 баллов)
и один тег(1 балл), которые в сумме дают 101 балл.
К примеру, в селекторе .nav .menuItem
два селектора класса, каждый из которых дает 10 баллов, то есть в сумме 20 баллов.
При этом псевдокласс :not
в отличие от других псевдокдассов не учитывается, однако учитывается тот селектор, который передается в псевдокласс not.
Правило !important
CSS предоставляет возможность полностью отменить значимость стилей. Для этого в конце стиля указывается значение !important:
a {font-size: 18px; color: red !important;} #menu a {color: navy;}
В этом случае вне зависимости от наличия других селекторов с большим количеством баллов к ссылкам будет применяться красный цвет, определяемый первым стилем.
Каскадность в CSS — Как создать сайт
Каскадность – приоритеты стилей в CSS
Добрый день друзья, в данной статье мы рассмотрим понятия каскадности в CSS, приоритетов стилей в языке.
В учебнике по CSS для начинающих, мы узнали что внедрить CSS-код в HTML-документ, можно тремя способами:
- Через тег
<link>
— внешний стиль, действует на весь сайт - Через тег
<style>
</style>
— внутренний стиль, действует на всю страницу - Через атрибут
style=" "
— встроенный стиль, действует на один тег
Все эти три способа, образуют единый каскад стилей: внешний, внутренний, встроенный. У каждого способа имеется свой приоритет.
Допустим, с помощью внешнего стиля, вы назначили абзацам сайта p
красный фон, его можно перебить внутренним стилем назначив всем абзацам одной страницы, зелёный фон, ну а внутренний стиль, можно перебить встроенным стилем, назначив выбранному абзацу синий фон.
Из этих трёх стилей, наибольший приоритет имеет встроенный стиль style=" "
Итак, на данный момент у нас имеется следующее, во внешнем стиле (CSS-файле), находится правило которое делает фон у всех абзацев сайта красным:
p { background: red; }
Во внутреннем стиле одной из страниц сайта находится правило, которое перебивает внешний стиль и делает фон у абзацев данной страницы, зелёным:
<style> p { background: green; } </style>
На этой странице, у одного абзаца есть встроенный стиль, который перебивает и внешние и внутренние стили, делая его фон синим:
<p> Абзац...</p>
Надеюсь, до этого момента всё ясно, идём дальше.
Стили браузера, автора и пользователя
Рассмотренные выше стили, называются стилями автора сайта (создателя сайта). Существуют еще два стиля — это стили браузера и стили пользователя.
Стили браузера — это стили по умолчанию, например если вы создали HTML-страницу, но еще не внедрили CSS-код, то браузер за вас назначает абзацам цвет шрифта черным, а размер 16px
.
Стили пользователя — это стили которые задает посетитель сайта в настройках своего браузера, например в них можно прописать чтобы на всех сайтах, которые вы посещаете, шрифт у абзацев был равен 22px
(это полезно делать, если у вас проблемы со зрением или на вебсайте на котором вы любите сидеть, слишком маленький шрифт).
Кстати в настройках браузера, можно задавать стили любому тегу, а не только абзацам, например можно сделать так, чтобы все ссылки на каждом сайте который вы просматриваете через свой браузер имели подчеркивание и оранжевый фон.
Теперь соберем в кучу все полученные знания на этом уроке и составим список чьи стили наиболее приоритетнее при просмотре сайта, начиная с самого маленького:
- Стили браузера — самый маленький приоритет
- Стили автора:
- Внешний стиль — файл
style.css
- Внутренний стиль — тег
<style>
- Встроенный стиль — атрибут
style=" "
- Внешний стиль — файл
- Стили пользователя — самый высокий приоритет
В основном, при создании сайтов вебмастера имеют дело с «внешним стилем», файлом style.css
Каскад в CSS — это одновременное применение разных по приоритету стилей, к HTML-элементам.
Дата публикации поста: 18 июля 2019
Дата обновления поста: 31 октября 2014
Навигация по записям
Приоритеты в Css и их повышение за счет Important, комбинация и группировка селекторов, пользовательские и авторские стили
15 ноября 2018
- Комбинации и группировка селекторов в CSS
- Как и для чего группируют селекторы в CSS коде
- Приоритеты Css свойств (с important и без него)
- Как повышают приоритеты Css свойств в авторских стилях
Здравствуйте, уважаемые читатели блога KtoNaNovenkogo.ru. Сегодня я предлагаю продолжить разговор про селекторы в Css, который мы начали еще в приведенной статьей. Еще раньше мы с вами познакомились с тем, что такое таблицы каскадных стилей, узнали, что означают пиксели или EM в размерах принятых в Css и многое другое.
Все материалы по таблицам каскадных стилей, которые уже были опубликованы на этом блоге, вы сможете найти в Справочнике. Сегодня же мы поговорим сначала про то, как можно комбинировать и группировать селекторы, а затем подробно рассмотрим приоритеты (что это?) правил, которые применяются для одного и того же элемента в Html коде (Important, подсчет селекторов и запись правил в атрибуте style).
Комбинации и группировка селекторов в CSS
Итак, в предыдущих статьях мы успели рассмотреть 7 типов:
- Селекторы тега, класса, Id, универсальный и атрибута
- Селекторы псевдоклассов и псевдоэлементов
Из этих семи возможных видов в языке CSS можно составлять комбинации. Все комбинации, которые мы будем составлять, имеют непосредственное отношение к иерархии элементов Html кода (предки — потомки, родители — дети, братья — сестры).
Первый вид комбинации называется контекстный селектор. Он учитывает взаимоотношение элементов Html кода по принципу «Предок — Потомок»:
Отдельные селекторы в комбинации записываются через пробел, а читать ее нужно справа налево. Т.о. правила CSS будут применяться только к последнему этой комбинации (самому правому), а все, что стоит перед ним, лишь позволяет задать более точное применение (прицеливание) для наших правил (акцентировать).
В первом примере говорится, что все элементы B (выделение жирным), у которых в предках есть элементы Div, будут окрашены в зеленый цвет.
В приведенном коде только подчеркнутый фрагмент будет окрашен в зеленый цвет, т.к. в числе его предков имеется Div, а второй фрагмент кода, выделенный тегами B, останется того цвета, который выбран для него по умолчанию, ибо в числе его предков контейнера Div уже нет (только P и Body):
Такие комбинации работают в любых браузерах.
Следующим типом комбинаций будет дочерний селектор, который строится на принципах взаимоотношений элементов кода по типу «Родитель — Ребенок»:
Записываются они с разделяющим знаком больше (>):
Данная запись будет трактоваться браузером так: для абзацев (Html тег P), «родителем» (ближайшим предком) которых является контейнер Div, будет использоваться выделение красным цветом.
В приведенном примере только обведенные абзацы будут окрашены в красный цвет, ибо они заключены непосредственно в контейнер Div, который для них является родителем (ближайшим предком). Если видоизменить приведенный пример дочернего селектора на такой:
body > p {color:red}
То красным уже будет выделен только последний абзац, т.к. его родителем является тег Body, а два первых параграфа останутся того цвета, который был предусмотрен для них по умолчанию (Body для них предок, но не родитель, которым является Div). Дочерние селекторы не работают в браузере Ie 6.
Как и для чего группируют селекторы в CSS коде
Последняя комбинация называется соседние селекторы и отвечает принципам отношений между элементами Html кода по типу «Сестры — Братья». В качестве разделителя у них может использоваться либо «+», либо «~»:
Данная запись означает, что содержимое элемента I (выделение курсивом) будет окрашено в красный цвет только тогда, если его ближайшим соседом слева (сверху по коду) является элемент B (выделение жирным). Например, данное условие будет соблюдено в этом примере:
Если записать соседний селектор в Css коде в таком виде:
h2 ~ p {color:red}
То это будет означать, что все параграфы (P), у которых выше по коду расположен соседний элемент h2 (заголовок), будут окрашены в красный цвет. Имеются в виду именно соседние элементы (отношения вида «Сестры — Братья»). На приведенном ниже примере заданному селектору будут удовлетворять обведенные абзацы:
Комбинации соседних селекторов в браузере Ie 6 тоже, к сожалению, не поддерживаются. В Ie 6 поддерживается только первый вид комбинации, а в Ie 7 и выше поддерживаются все остальные. В остальных браузерах никаких проблем возникать не должно.
Селекторы в Css можно еще и группировать. Например, если у каких-то из них используется одно или несколько одинаковых правил, то их можно объединить в группу для уменьшения объема Css кода.
В приведенном на скриншоте примере, Css свойство «background:yellow» повторяется для каждого селектора заголовка (h2-3), что может вызвать сложности (многократная работа) при желании поменять значение этого свойства. Поэтому второй вариант сгруппированной записи выглядит немного предпочтительнее.
Обратите внимание, что при группировке селекторы пишутся через запятую. Если одинаковых правил будет больше, то и экономия кода будет более ощутимой. А те правила, которые были уникальными, нужно по-прежнему записывать индивидуально.
Приоритеты Css свойств (с important и без него)
Теперь давайте подумаем, а какое стилевое оформление будет использовать браузер, если никаких стилей для данного элемента Html кода не задано? А для этого существует соответствующая спецификация валидатора WC3, где все это описано.
Для этого на странице со спецификацией CSS нужно прокрутить текст до конца и перейти по ссылке «Default style sheet for HTML 4»:
Как вы можете видеть, сейчас произошло уже окончательное разделение Html и Css. Т.е. даже для чистого ХТМЛ кода браузер все равно будет использовать дефолтные свойства таблиц стилей. Так вот свойства, принятые по умолчанию, имеют самый низший приоритет.
Более высокий приоритет имеют свойства, которые назначит пользователь в настройках своего браузера. Эти стили будут применены к любым документам, которые он просматривает в этом обозревателе.
Правда не у всех браузеров есть такая возможность, но по крайней мер, в Ie и Опере она имеется. Т.е. при желании пользователь в качестве источника стилевой разметки сможет подключить свой собственный файл CSS.
Например, в Ie для этого нужно выбрать из верхнего правого меню «Сервис» — «Свойства обозревателя», а затем на первой вкладке «Общие» щелкнуть по нижней кнопке «Оформление». В открывшемся окне вам нужно поставить галочку в поле «Оформлять, используя пользовательский стиль», и с помощью кнопки «Обзор» найти на своем компьютере нужный вам файл стилевой разметки CSS:
Т.е. у пользователя есть возможность заставить любой открываемый в браузере сайт выглядеть в соответствии с его требованиями, описанными в файле CSS. Это называется «пользовательские стили» и они имеют приоритет выше, чем стили, которые определены в спецификации по умолчанию. Но еще больший приоритет будут иметь так называемые авторские стили.
Под авторскими стилями имеются в виду свойства, которые подключаются к Html документу любым из трех основных способов (тег или атрибут Style в Css, а также внешний файл с таблицами стилей).
Т.е., если я (разработчик сайта) захотел использовать в оформлении какого-либо элемента Html кода стили отличные от дефолтных (помните, они в спецификации описаны), то пользователь своим собственным файлом Css перебить мое оформление не сможет.
Пользователь будет вынужден смириться? Нет. Есть у него возможность повысить приоритет своих свойств CSS с помощью добавления Important в конце каждого из них. Пишется это слово через пробельный символ и перед ним ставится восклицательный знак:
p {color:red !important;}
Если у пользователя в его собственном файле стилей, который он подключил к браузеру, будет прописано это же свойство с Important, то все абзацы он будет видеть в красном цвете. Но ведь и автор (разработчик) сайта мог использовать Important для этого свойства. Кто же тогда победит и чей приоритет окажется выше?
Решили, что пользовательские стили с Important будут иметь по-любому более высокий приоритет, чем авторские стили, что с Important, что без него.
Давайте обобщим в виде списка всю изложенную информацию по поводу приоритетов стилевых свойств. Приоритет будет убывать сверху вниз:
- Пользовательские с Important
- Авторские с Important
- Авторские
- Пользовательские
- Стили, принятые для Html элементов в спецификации по умолчанию (когда ни автор, ни пользователь ничего другого не задали)
Т.е. без Important авторские стили важнее, а с них уже пользовательские стили самые важные и приоритетные. Ну, а теперь давайте разбираться именно с авторскими таблицами, ибо про то, что делает пользователь, нам не ведомо и покрыто мраком.
Как повышают приоритеты Css свойств в авторских стилях
Приоритет авторских свойств тоже должен подчиняться определенным правилам, которые позволяли бы разрулить ситуации, когда для одного и того же элемента было бы прописано несколько взаимоисключающих правил.
Именно сейчас мы с вами и переходим к вопросу каскадности таблиц стилей CSS. Давайте рассмотрим это на примере, чтобы было нагляднее. Допустим, что у нас имеется фрагмент кода со следующими Html элементами (параграф внутри контейнера Div):
<div> <p>Содержимое контейнера </p> </div>
Давайте сначала пропишем такие свойства:
p {color:red} .sbox {background:#f0f0f0}
В результате будет применено и первое из них к параграфу (ибо он образован тегом P), и свойство, задающее серый фон для элемента с классом «sbox», который опять же имеется у этого параграфа:
А теперь давайте добавим ко второму селектору (класса) еще одно свойство, которое будет конфликтовать с первой строчкой (в них обоих задается цвет для текста через color, но значения при этом используются разные):
p {color:red} .sbox {background:#f0f0f0;color:blue}
В результате цвет текста параграфа станет синим вместо красного.
Почему? Потому что именно таким способом разрешается конфликт, когда один и тот же элемент Html кода получает сразу несколько одинаковых правил, но с разными значениями и из разных мест Css кода. Для того, чтобы определить, приоритет какого правила выше, нужно считать его селекторы.
Кроме этого сами селекторы имеют градацию по приоритетам. Самый высокий приоритет у ID. В этом примере цвет текста будет синим именно потому, что приоритет Id (#out) будет выше, чем у селектора тега (p):
p {color:red} #out {color:blue}
Дальше по лесенке приоритетов, направленной вниз, следуют селекторы классов, псевдоклассов и атрибутов. В следующем примере опять проиграет тег (p) и цвет текста абзаца будет синим, ибо тягается он с селектором более высокого приоритета (класса):
p {color:red} .sbox {color:blue}
Ну, и самым низким приоритетом (не считая универсальный *, обладающего нижайшим весом и не вносящего никаких изменений в подобные бодания) обладают селекторы тегов и псевдоэлементов.
Но опять же нужно считать количество селекторов одного и того же уровня приоритета, и чем их будет больше, тем приоритетнее будет данное свойство. Например:
div p {color:red} p {color:blue}
Какого цвета в результате получится текст параграфа? Правильно, именно красного, т.к. у этого свойства больше селекторов тегов (два против одного). О как. Т.е. сначала считаются Id. Если победитель не выявлен, то считаются классы, псевдоклассы и атрибуты. Ну, а если и там ничего не решилось или таких не было найдено, то считаются селекторы тегов и псевдоэлементов.
Но вполне возможна ситуация, когда победитель не выявится и селекторы конкурирующих классов окажутся равного приоритета в сумме. Например, для нашего многострадального параграфа заключенного в контейнер Div:
<div> <p>Содержимое контейнера </p> </div>
Вполне можно будет написать такой кусок Css кода:
div.box #out{color:red} #in p.sbox{color:blue}
И какого же цвета должен быть текст параграфа? Обе комбинации описывают именно наш параграф. Первую следует, как и водится, читать справа налево: применить данные свойства (color:red) для элемента с Id #out, который стоит где-то внутри (иметь его среди «предков») контейнера Div с классом .box (div.box). Полностью подходит к нашему абзацу.
Вторая комбинация: применить данные свойства (color:blue) для элемента параграфа с классом sbox (p.sbox), который стоит внутри любого элемента с Id #in. Опять же, она полностью описывает именно наш параграф. Давайте считать селекторы.
С ID в обоих комбинациях встречаются по одному разу, тоже самое можно сказать и о классах. Остается только посчитать селекторы тегов, но их тоже в обоих комбинациях используется одинаковое число раз (один). Засада.
Получились равные приоритеты у одного и того же свойства, имеющего разные значения (цвет текста красный, либо синий). Как же браузер будет решать эту дилемму?
Тут будет действовать правило — кто последний, тот и прав. Поэтому в моем примере цвет текста параграфа будет синим, ибо это свойство (color:blue) расположено ниже в коде. Если эти правила поменять местами:
#in p.sbox{color:blue} div.box #out{color:red}
То в результате цвет текста параграфа изменится на красный. Что и требовалось доказать. Можно дописать, например, к любой комбинации еще один селектор тега и мы перевесим чашу весов в его пользу, даже если она и не стоит ниже в коде:
body #in p.sbox{color:blue} div.box #out{color:red}
В этом случае цвет параграфа измениться на синий. Универсальный селектор «*» вообще никакого влияния на подсчет приоритетов не оказывает. Кстати, чуть выше мы рассмотрели способ повышения приоритета Css правил с помощью добавления Important. В нашем примере это может выглядеть так:
p {color:green !important} #in p.sbox{color:blue} div.box #out{color:red}
Какого цвета будет в этом случае текст параграфа? Зеленым, конечно же. И даже считать ничего не нужно, ибо добавление Important к стилевому свойству решает этот спорный вопрос однозначно, где бы оно в коде не стояло и сколько у него селекторов не было.
Но Important не является единственным способом безоговорочного повышения приоритета свойства. Второй способ повышения может заключаться в использовании стилевых свойств в атрибуте Style нужного вам Html элемента.
Т.е. прописываете внутри того же многострадального тега P атрибут Style с заданием любого цвета:
<div> <p>Содержимое контейнера </p> </div>
Ну и все. Теперь вне зависимости от того, какие свойства прописаны для этого элемента во внешнем файле таблицы стилей или же внутри тегов Style Html кода, цвет текста параграфа будет желтым.
Но вот свойства с Important он перебить не сможет. Т.е. в последнем примере, где мы добавили правило «p {color:green !important}», цвет текста по-прежнему будет зеленым, даже несмотря на.
На самом деле приоритет двух правил (с Important во внешнем файле таблицы стилей и в атрибуте style) равный, а значит нужно переходить к подсчету селекторов. А разве они могут быть внутри атрибута style?
Да никаких не может быть, а это значит, что правило, прописанное в атрибуте style, всегда проиграет правилу с Important только за счет меньшего числа селекторов (ноль будет меньше любого числа).
Ну, а что же тогда даст наибольший приоритет Css свойству? Правильно, его оно будет прописано в атрибуте style да еще с Important:
<head> <style> p {color:green !important} #in p.sbox{color:blue} div.box #out{color:red} </style> </head> <body> <div> <p>Содержимое контейнера </p> </div> </body>
В этом случае цвет текста параграфа будет желтым и перебить это уже ничем в авторских стилях будет невозможно. Мы нашли абсолютный способ задания стилей. Его сможет перебить только пользователь со своим собственным файлом стилей и прописанным для этого свойства Important.
Итак, давайте попробует составить список факторов, влияющих на приоритет свойства в авторских стилях по мере их убывания:
- Прописывание свойства в атрибуте style нужного тега вместе с Important
- Добавление Important к свойству во внешнем файле таблиц стилей или же в теге style прямо в Html коде
- Простое прописывание этого свойства в атрибуте style нужно элемента
- Использование бОльшего числа Id для данного свойства
- Использование большего числа селекторов классов, псевдоклассов или атрибутов
- Использование большего числа селекторов тегов и псевдоэлементов
- Более низкое расположение свойства в Css коде, при прочих равных условиях
На самом деле правила в атрибуте style при верстке используются крайне редко (представьте себе, как трудно будет в этом случае вносить изменения во всем коде сайта, а не в отдельном файле CSS).
Этот атрибут в основном используют, когда только нужно что-то быстро протестировать. Ну, и еще это удобно, если вы вставляете свой код в чужие Html странички, которые имеют свое стилевое оформление и которое может унаследоваться (наследование в CSS) и для ваших вставляемых элементов.
А зачем и как вставлять свой код на чужие страницы? Нам может и незачем, а Яндекс и Гугл это делают, когда размещают объявления РСЯ или рекламу Гугл Адсенса на чужих площадках (наших с вами сайтах).
Добавив во все элементы кода рекламных блоков атрибут style, с прописанными в нем свойствами и добавленным Important, можно уже не беспокоиться о том, что код объявлений будет изменен каким-либо образом (хотя объявления Яндекса все же можно менять за счет CSS и Important, видимо они не использовали этот метод).
На этом изучение селекторов можно считать законченным, в следующей статье мы уже начнем разбирать Css правила.
Удачи вам! До скорых встреч на страницах блога KtoNaNovenkogo.ru
Использую для заработка
Введение в каскад CSS — CSS: каскадные таблицы стилей
Каскад — это алгоритм, который определяет, как комбинировать значения свойств, происходящие из разных источников. Он лежит в основе CSS, как подчеркивается в названии: Cascading Style Sheets. В этой статье объясняется, что такое каскад, порядок, в котором каскадируются объявления CSS, и как это влияет на вас, веб-разработчика.
В каскаде участвуют только объявления CSS, то есть пары свойство / значение.Это означает, что at-правила, содержащие сущности, отличные от объявлений, такие как правило @ font-face
, содержащее дескрипторов , не участвуют в каскаде. В этих случаях только at-правило в целом участвует в каскаде: здесь @ font-face
, идентифицированный его дескриптором font-family
. Если определены несколько правил @ font-face
с одним и тем же дескриптором, в целом рассматривается только наиболее подходящий @ font-face
.
В то время как объявления, содержащиеся в большинстве правил at-правил, например, в @media
, @document
или @supports
, участвуют в каскаде, объявления, содержащиеся в @keyframes
, не участвуют. Как и в случае с @ font-face
, с помощью каскадного алгоритма выбирается только at-правило в целом.
Наконец, обратите внимание, что @import
и @charset
подчиняются определенным алгоритмам и на них не влияет каскадный алгоритм.
Задача каскадного алгоритма CSS заключается в выборе объявлений CSS для определения правильных значений свойств CSS. Декларации CSS происходят из разных источников: таблиц стилей User-agent , таблиц стилей Author и таблиц стилей пользователя .
Хотя таблицы стилей происходят из разных источников, они частично совпадают по объему; для этого каскадный алгоритм определяет, как они взаимодействуют.
Таблицы стилей агента пользователя
В браузере есть базовая таблица стилей, которая задает стиль по умолчанию для любого документа.Эти таблицы стилей называются таблицами стилей пользовательских агентов . Некоторые браузеры используют для этой цели настоящие таблицы стилей, в то время как другие моделируют их в коде, но конечный результат тот же.
Некоторые браузеры позволяют пользователям изменять таблицу стилей пользовательского агента. Хотя некоторые ограничения на таблицы стилей пользовательского агента устанавливаются спецификацией HTML, браузеры по-прежнему имеют большую свободу действий: это означает, что существуют значительные различия от одного браузера к другому. Чтобы упростить процесс разработки, веб-разработчики часто используют таблицу стилей сброса CSS, переводя значения общих свойств в известное состояние перед тем, как приступить к внесению изменений в соответствии со своими конкретными потребностями.
Авторские таблицы стилей
Авторские таблицы стилей являются наиболее распространенным типом таблиц стилей. Это таблицы стилей, которые определяют стили как часть дизайна данной веб-страницы или сайта. Автор страницы определяет стили для документа с помощью одной или нескольких таблиц стилей, которые определяют внешний вид веб-сайта — его тему.
Пользовательские таблицы стилей
Пользователь (или читатель) веб-сайта может выбрать переопределение стилей во многих браузерах с помощью пользовательской таблицы стилей , разработанной для адаптации работы к пожеланиям пользователя.
Каскадный алгоритм определяет, как найти значение, которое будет применяться для каждого свойства для каждого элемента документа.
- Сначала он фильтрует все правила из разных источников, чтобы сохранить только те правила, которые применяются к данному элементу. Это означает правила, селектор которых соответствует данному элементу и которые являются частью соответствующего правила
media
at-rule. - Затем он сортирует эти правила по их важности, то есть соблюдаются ли они
! Important
или нет, и по их происхождению.Каскад находится в порядке возрастания, что означает, что! Важных значений
из пользовательской таблицы стилей имеют приоритет над обычными значениями, полученными из таблицы стилей пользовательского агента:Происхождение Важность 1 пользовательский агент нормальный 2 пользователь нормальный 3 автор нормальный 4 анимации 5 автор ! Важно
6 пользователь ! Важно
7 пользовательский агент ! Важно
8 переходов - В случае равенства считается, что специфичность значения позволяет выбрать то или иное значение.
После того, как ваш контент закончил изменять стили, он может оказаться в ситуации, когда ему потребуется восстановить их до известного состояния. Это может произойти в случае анимации, смены темы и т. Д. Свойство CSS all
позволяет быстро вернуть (почти) все в CSS в известное состояние.
all
позволяет выбрать немедленное восстановление всех свойств до любого из их начального (по умолчанию) состояния, состояния, унаследованного от предыдущего уровня каскада, определенного источника (таблица стилей пользовательского агента, таблица стилей автора или пользователь таблица стилей) или даже полностью очистить значения свойств.
CSS-анимации, использующие @keyframes
at-rules, определяют анимацию между состояниями. Ключевые кадры не каскадируются, что означает, что в любой момент времени CSS принимает значения только из одного единственного @keyframes
и никогда не смешивает несколько.
Когда подходят несколько ключевых кадров, выбирается последний из тех, что определены в наиболее важном документе, но никогда не объединяются все вместе.
Давайте рассмотрим пример, включающий несколько источников CSS из разных источников; здесь у нас есть таблица стилей пользовательского агента, две авторские таблицы стилей, таблица стилей пользователя и встроенные стили в HTML:
Пользовательский агент CSS:
li {margin-left: 10px}
Автор CSS 1:
li {margin-left: 0}
Автор CSS 2:
@media screen {
li {margin-left: 3px}
}
@media print {
li {margin-left: 1px}
}
Пользователь CSS:
.конкретный {margin-left: 1em}
HTML:
- 1st
- 2nd
В этом случае должны применяться декларации внутри li
и . Специальных правил
. Никакое объявление не помечено как ! Important
, поэтому порядок приоритета — это таблицы стилей автора перед таблицами стилей пользователя или таблицей стилей агента пользователя.
Итак, в конкурсе три объявления:
левое поле: 0
левое поле: 3px
левое поле: 1px
Последний игнорируется (на экране), а первые два имеют одинаковый селектор, следовательно, одинаковую специфичность.Следовательно, выбирается последний:
левое поле: 3px
Обратите внимание, что объявление, определенное в пользовательском CSS, хотя и имеет большую специфичность, не выбирается, поскольку каскадный алгоритм применяется перед алгоритмом специфичности.
- Очень простое введение в каскад CSS
- Ключевые концепции CSS: Синтаксис CSS, по правилу Комментарии, специфичность и наследство коробка, режимы макета и модели визуального форматирования, и падение маржи, или начальный, вычислено, решено, указано, используемый, и фактические значения.Определения синтаксиса значений, сокращенные свойства и заменил элементы.
CSS каскад
Cascade — это функция CSS, с помощью которой браузер определяет значения того, какие свойства будут применены к элементу при возникновении конфликта свойств. Конфликт свойств возникает, когда несколько правил определены для элемента, селекторы которого имеют одинаковую специфичность и содержат одинаковые свойства, но с разными значениями.
Cascade работает следующим образом: если в таблице стилей для одного элемента определено несколько правил, селекторы которых имеют одинаковую специфичность и содержат конфликтующие свойства, то значения конфликтующих свойств правила, расположенного ниже в таблица стилей установлена для элемента:
Попытайся »Заголовок страницы <стиль> p {цвет: желтый; } p {цвет: красный; } p {цвет: зеленый; } / * элемент будет установлен в зеленый цвет текста * /Цвет текста абзаца зеленый.
Если разные правила CSS для одного элемента содержат свойства, которые не конфликтуют, они объединяются в один стиль, т.е. каждое новое правило добавляет новую информацию о стиле к правилу, указанному выше:
h2 { цвет: серый; семейство шрифтов: без засечек; } h2 {border-bottom: 1px сплошной черный; }
Код в приведенном выше примере эквивалентен коду в примере ниже, в котором все три свойства указаны в одном правиле:
h2 { цвет: серый; семейство шрифтов: без засечек; нижняя граница: сплошной черный 1px; }
Обычно дополнительные правила для элемента задаются в тех случаях, когда один стиль был задан сразу для нескольких элементов, но вам также нужно добавить что-то еще для конкретного элемента:
h2, h3, h4 {/ * одинаковый стиль для трех элементов * / цвет: серый; семейство шрифтов: без засечек; } / * дополнительное правило для заголовков второго уровня * / h3 {border-bottom: 1px сплошной черный; }
Каскадных таблиц стилей (CSS)
Концепция
CSS — это стандарт, предназначенный в первую очередь для отделения презентационных атрибутов (например, цвета фона, размера шрифта или отступов) от содержимого.Хотя он может работать со многими типами документов, он в основном используется как способ передачи презентационной информации на веб-страницах.
Разделение между содержимым и представлением повышает гибкость, позволяя авторам определять один набор стилей, который будут использовать тысячи документов, что сокращает время и работу, необходимую для каждого обновления. Кроме того, реализация CSS позволяет документу быть чисто семантическим, освобождая его от необходимости использования презентационной разметки.
Объявления, свойства и ценности
Объявление — это основная единица CSS , что означает, что вы не можете использовать в своих документах что-либо меньшее, чем это. Исключение составляет, в основном, присвоение значения свойству.
Другими словами, объявление — это ответ на вопрос. Насколько широким должен быть этот стол? Насколько толстая эта граница? Какого цвета должен быть этот фон? Насколько большой шрифт в этом абзаце? И именно так вы определяете внешний вид своего документа: настраивая объявления, по одному для каждого свойства, которое вам нужно определить.
Но CSS имеет особый формат, которому должно следовать каждое объявление. Он состоит в имени свойства, за которым следует двоеточие («:») и значение, которое оно будет присвоено. При предоставлении более одного объявления в одном блоке каждое объявление должно отделяться от следующего точкой с запятой («;»). Вот почему авторы часто используют точку с запятой в конце каждого объявления, независимо от наличия следующего объявления. Следующая схема описывает части объявления CSS .
цвет : красный ;
В следующем примере представлен набор объявлений с использованием этого формата. Здесь в конце каждого объявления добавляется дополнительный разрыв строки для улучшения читаемости.
цвет фона: зеленый;
размер шрифта: 16 пикселей;
маржа сверху: 40 пикселей;
font-weight: жирный;
Селекторы
С учетом этого мы можем создавать объявления, но как нам указать, на какие элементы документа они должны влиять? Здесь на помощь приходят селекторы CSS .Селектор — это средство сделать ссылку на группу из одного или нескольких элементов HTML , чтобы применить к ней набор объявлений CSS .
Существует структура, которой вы должны соответствовать, чтобы использовать селектор, и она соответствует селектору, за которым следует набор объявлений, заключенных в фигурные скобки («{}»). В следующем примере, где для удобства чтения были добавлены пробелы и разрывы строк, эта структура отражена.
[селектор] {
цвет фона: зеленый;
размер шрифта: 16 пикселей;
маржа сверху: 40 пикселей;
font-weight: жирный;
}
Доступен широкий диапазон селекторов, что обеспечивает исключительную гибкость для управления свойствами.В следующих разделах мы увидим некоторые из самых основных селекторов, поскольку они представят идеи, на которых будут построены другие селекторы.
Универсальный селектор
Универсальный селектор соответствует всем элементам в документе. Это своего рода подстановочный знак, который имеет большее значение при использовании в комбинациях. Следующий код устанавливает несколько свойств для всех элементов в документе.
* {
размер шрифта: 1.5em;
цвет: # 444;
}
Селекторы типа
Селектор типа соответствует всем элементам в документе, имеющим указанный тип.С помощью этого селектора вы можете применять объявления, например, ко всем абзацам ( p
элементов), всем элементам списка ( li
элементов) или всем ссылкам ( a
элементов) в документе. Следующий пример предоставляет объявления стилей для всех упорядоченных списков ( элементов и
элементов) в документе.
ол {
маржа слева: 0;
отступ слева: 2em;
}
ID селекторы
Селектор ID соответствует элементу, который имеет указанное значение в его атрибуте id
.Поскольку по определению значений id и
должны быть уникальными, этот селектор может влиять только на один элемент в документе. В его объявлении указанному идентификатору ID должен предшествовать знак решетки («#»).
В следующем примере показан набор объявлений, применяемых к элементу, который имеет значение «maintitle» в атрибуте id
.
#maintitle {
размер шрифта: 4em;
цвет синий;
текст-оформление: подчеркивание;
}
Чтобы прояснить ситуацию, предыдущие объявления повлияли бы на такой элемент, как следующий.
Превосходные шансы
Селекторы класса
Класс — это концепция, введенная в CSS с целью группирования объявлений и применения их к настраиваемому набору элементов, независимо от их типа или природы. С другой точки зрения, класс — это одно или несколько объявлений CSS , сгруппированных под именем, которое элементы могут использовать для доступа к своим определениям и на которые они влияют.
Сказав это, селектор класса применяет набор объявлений ко всем элементам, которые имеют указанное имя класса в их атрибуте class
. В его конструкции точка («.») Должна предшествовать имени класса. В следующем примере показан набор объявлений для класса под названием «important».
.important {
размер шрифта: 1.2em;
font-weight: жирный;
красный цвет;
}
И эти объявления повлияют на следующие элементы.
Предупреждение
Не открывайте шлюз во время межзвездного путешествия!
Расширенные селекторы
CSS позволяет создавать комбинации с четырьмя базовыми селекторами, описанными выше, со ссылкой на отношения между родителями, детьми, братьями и сестрами, потомками и т. Д. С помощью некоторых из этих инструментов вы можете, например, применить объявления ко всем абзацам, которые являются прямыми дочерними элементами тела
.Кроме того, он предоставляет другие селекторы на основе состава атрибутов или состояний, которые представляет элемент, позволяя авторам нацеливать объявления, например, на все входных
элементов, которые относятся к типу
«радио».
Несмотря на то, что некоторые из последних плохо поддерживаются, эти расширенные селекторы чрезвычайно эффективны и могут помочь в разработке сложных веб-сайтов. Тем не менее, они не будут рассматриваться в этом руководстве из-за его объема. Этот раздел носит информативный характер.
PPT — Использование CSS (каскадных таблиц стилей) Презентация PowerPoint, бесплатная загрузка
Эффи Надив Отредактировано с разрешения автора Амиром Киршем. Использование CSS (каскадные таблицы стилей)
Использование CSS • Связывание • Селектор CSS • Стиль • Хакерство
Краткая история • Первое предложение CSS от Хакона Ли в октябре 94 • Создание W3C и проведение семинара по CSS в 95 • CSS1 становится рекомендацией в декабре 96 • CSS2 становится рекомендацией в мае 98 • Черновики первые 3 модуля CSS3 опубликованы в июне 99 г.
Связывание CSS • • Альтернативный: •
Use Relativity • При связывании с таблицей стилей используйте относительный путь: href = «skins / sg / thin.css» • При указании ресурса внутри таблицы стилей используйте относительный путь: src = ”images / my-image.png”
Правило CSS • selector {property: value;}
Selector • ID (# main-menu) • Class (.боковая панель) • HTML-тег (тело) body {background-color: #fff;} body #wrapper {background-color: #ccc;} body div.menu {background-color: #fff;}
CSS 2.1 синтаксис селектора
Синтаксис селектора CSS 2.1
Селекторы потомков • div p {color: # f00; } • div # myid li p.info {color: # f00; }
Дочерние селекторы • div> span {color: # f00; }
Псевдоклассы • a: link • a: посещено • a: hover • a: active • a.ошибка: посещено {color: # f00}
Псевдоэлементы • p: первая буква {• color: # 0000ff; • font-variant: small-caps •} • a: link: after {• content: «(» attr (href) «)»; •}
Селекторы соседних братьев и сестер • p + p {color: # f00; }
Первый абзац
Второй абзац
Селекторы атрибутов • p [title] {color: # f00; } • div [class = error] {color: # f00; } • td [заголовки ~ = col1] {цвет: # f00; } • p [lang | = en] {color: # f00; }
Селекторы группирования • h2, h3, h4, h5, h5, h6 • {• color: # 000; •}
Специфичность селектора CSS
Специфичность селектора рассчитывается следующим образом: • подсчитать количество атрибутов ID в селекторе (= a) • подсчитать количество других атрибутов и псевдоклассов в селекторе (= b) • подсчитать количество имен элементов в селекторе (= c) • игнорировать псевдоэлементы.• Объединение трех чисел a-b-c (в системе счисления с большим основанием) дает конкретность.
Некоторые примеры: • * {} / * a = 0 b = 0 c = 0 -> специфичность = 0 * / • LI {} / * a = 0 b = 0 c = 1 -> специфичность = 1 * / • UL LI {} / * a = 0 b = 0 c = 2 -> специфичность = 2 * / • UL OL + LI {} / * a = 0 b = 0 c = 3 -> специфичность = 3 * / • h2 + * [REL = up] {} / * a = 0 b = 1 c = 1 -> специфичность = 11 * / • UL OL LI.red {} / * a = 0 b = 1 c = 3 — > специфичность = 13 * / • LI.red.level {} / * a = 0 b = 2 c = 1 -> специфичность = 21 * / • # x34y {} / * a = 1 b = 0 c = 0 -> специфичность = 100 * /
Стиль • Шрифты • Цвета • Положение • Навигация • Формы • Изображения
Шрифты • Не изменять семейство шрифтов • Используйте размер подарков (%) • Не выделяйте жирным шрифтом более 5% текста • Обращайте внимание на линию -высота (длинные линии — большая высота)
Цвета • Чем меньше, тем лучше • Используйте искровые цвета • Изменяйте цветность и яркость, чтобы выбирать близкие цвета • Никогда не используйте красный, если это не ошибка!
Позиция • Не переопределяйте шаблон руководства по стилю • Когда вы думаете о ширине: 100%, используйте «авто» • Помните блочную модель (отступы находятся поверх 100%) • Float, float float • Делайте плавающие «Display: inline;»
Навигация • Не маскировать цветовую схему ссылок
Формы • Использовать стандартные формы • Не стилизовать элементы формы (входы, кнопки) • Использовать набор полей и легенду • Использовать элемент dl для структурирования form
Images • Используйте карты изображений # layout-Switcher # layout-wide {background: transparent url (images / tb-layout.gif) без повтора слева вверху; } # layout-Switcher # layout-normal {фон: прозрачный URL-адрес (images / tb-layout.gif) no-repeat -36px top; } # layout-Switcher # layout-wide: hover {background-position: left -25 пикселей; } # layout-Switcher # layout-normal: hover {фон-позиция: -36px -25px; }
Хакерство — Исправление поведения при ошибках • Нацеливание правила на конкретный браузер для обхода ошибки (обычно это ошибка IE) • Логические ошибки • Ошибки области действия • Ошибки синтаксиса • Ошибки приоритета • Хаки Woodo • CSS2 фильтры
Логические ошибки • Добавление «display: inline» к поплавку.Поплавки — это блочные элементы (например, div). Объявление их как «float» заставляет их автоматически блокировать элементы. Почему мы говорим им, что они «в очереди»?
Ошибки области • * html body {• Background-ccolr: #fff; •}
Синтаксические ошибки • .class {• height: 22px; / * все браузеры * / • _height: 24px; / * IE6 или меньше * / • * height: 26px; / * IE7 или меньше * / •}
Ошибки приоритета • .class {• height: 22px! Important; • высота: 24px; •}
Хаки Woodo • Ошибка Picabu — масштабирование: 1; переполнение: скрыто; • Мерцающие элементы списка — высота: 1%; • HasLayout — масштаб: 1; • Изменить порядок рендеринга
Фильтры CSS2 •.menu> ul a {width: auto;}
Общие правила • Попробуйте повесить свой атрибут там, где он наиболее эффективен. (минимальное количество повторов и минимальные побочные эффекты) • Используйте контекст. В нашем главном меню есть только один класс: меню. • Добавьте префикс к именам классов. (Мы тоже должны были это сделать) • Протестируйте в различных браузерах (IE, FF, Op, Saf / Chr)
Спасибо
Каскадные таблицы стилей (CSS) Пример
, Стив Каллихан
ISBN: 0789726173
Опубликовано Que«Я купил четыре книги по этой теме, и ваша, безусловно, единственная, в которой были предприняты какие-либо попытки описать вещи логически, последовательно значимо и не запутанно.»- комментарий читателя.
Закажите каскадных таблиц стилей (CSS) по примеру на Amazon.com за 29,19 долларов. Вы экономите 10,80 $ (скидка 27%). Рейтинг четыре звезды из пяти!
Описание и информация для заказа
Каскадные таблицы стилей (CSS) — ключ к созданию визуально более богатых, динамически интерактивных, а также более эффективных и доступных веб-страниц. Все современные веб-браузеры поддерживают практически все спецификации CSS1 и большую часть CSS2. Cascading Style Sheets (CSS) By Example учит, как создавать расширенные веб-дизайны с использованием CSS, оставаясь при этом обратно совместимыми со старыми браузерами, которые либо не поддерживают CSS, либо поддерживают его только частично.
Полученный читателями на Amazon.com и Amazon.co.uk четыре из пяти звезд, Cascading Style Sheets (CSS) по примеру предлагает постепенный ускоренный подход, который позволяет даже начинающим и начинающим пользователям быстро встать и работают с использованием каскадных таблиц стилей для улучшения и повышения воздействия своих проектов веб-публикации.
Закажите каскадных таблиц стилей (CSS) по примеру на Amazon.com за 29,19 долларов. Вы экономите 10,80 $ (скидка 27%). Рейтинг четыре звезды из пяти!
«Не могу передать, как я был приятно удивлен, когда работал над этой книгой.Он наполнен объяснениями и примерами для работы и охватывает все важные темы CSS ». — из отзыва клиентов на Amazon.com.
- 460 страниц в мягкой обложке, опубликовано Que, ноябрь 2001 г. Прейскурантная цена: 29,99 долларов.
- Оценено 8 из 13 отзывов клиентов на Amazon.com и 2 из 2 отзывов клиентов на Amazon.co.uk. Прочтите онлайн-обзор на CodeHelp.co.uk.
- Для ответов на такие вопросы, как Почему CSS? , Кому подходит эта книга? , Зачем учиться использовать CSS? и Какие инструменты вам нужны? , см. Введение в мою книгу.
- Подробное описание, включая краткое изложение главы за главой, см. На странице «Описание книги». Просмотр содержания.
- Моя книга написана с учетом всех платформ . Все файлы примеров, использованные в книге, доступны для загрузки в форматах Windows, Macintosh и Unix .
- Я написал свою книгу для того, чтобы читатели, практически не имеющие опыта работы с HTML, могли выполнить и завершить все примеры CSS, включенные в книгу.Однако знание HTML рекомендуется, если вы хотите серьезно заняться публикацией веб-страниц с использованием CSS. Чтобы получить быстрые инструкции, см. Мои книги по изучению HTML.
- Amazon.com известен своей безопасностью платежей, скоростью доставки и общей удовлетворенностью клиентов. Однако если у вас возникнут проблемы с заказом, просто посетите Служба поддержки Amazon.com для быстрого решения вашей проблемы.
Закажите каскадных таблиц стилей (CSS) по примеру на Amazon.com за $ 29,19. Вы экономите 10,80 $ (скидка 27%). Рейтинг четыре звезды из пяти!
«Объясняется концепция, а затем вам дается пример для ввода в таблицу стилей, а затем проверьте в браузере, что это за эффект. Это позволяет очень легко понять и увидеть результаты … Если вы действительно заинтересован в изучении CSS, купите ЭТУ книгу. » — из отзыва покупателей на Amazon.com.
«Эта книга действительно может помочь вам увидеть различие между форматированием и данными, поскольку базовый HTML в примерах не требует серьезных изменений от главы к главе.Несколько настроек таблицы стилей и простой документ можно преобразовать ». — из отзыва клиентов на Amazon.co.uk.
Вернуться в меню.
Скачать файлы примеров
Читатели могут загрузить все файлы примеров, использованные в книге. Файлы примеров содержатся в сжатых файлах в формате ZIP; после загрузки просто откройте ZIP-файл в программе сжатия файлов и извлеките содержимое в рабочую папку. Просто выберите пример пакета файлов для своей платформы:
ПРИМЕЧАНИЕ. Следующие загрузки НЕ содержат окончательных примеров CSS из книги, а содержат только файлы HTML и изображения, которые используются в книге.
Ниже приведены коллекции маркеров, полос, фонов и других изображений веб-арта, которые вы можете загрузить и использовать на своих веб-страницах:
- Фоны. Набор фоновых изображений, которые вы можете использовать для улучшения своих веб-страниц.
- Иконки. Набор маркеров, кнопок и других значков, которые вы можете использовать для улучшения своих веб-страниц.
- Графические правила. Набор графических правил, которые вы можете использовать для улучшения ваших веб-страниц.
- Декоративные алфавиты. Три декоративных алфавита, которые вы можете использовать для создания буквиц.
Хотите узнать больше?
Скоро в продаже! В ближайшем будущем поищите здесь дополнительные загрузки, в том числе шаблоны таблиц стилей CSS и шаблоны HTML.
Вернуться в меню.
Вопросы и ресурсы для читателей
Во-первых, проверьте страницу FAQ (Часто задаваемые вопросы), которую я создал, чтобы увидеть, был ли уже задан ваш вопрос и дан ответ.
Если у вас есть вопросы или вы столкнулись с проблемами, на которые нет ответов в FAQ, не стесняйтесь спрашивать.Я стараюсь отвечать на вопросы в тот же день, когда они получены.
Я также буду составлять страницу для читателей, на которой будут представлены веб-страницы в стиле CSS, созданные читателями моей книги. Если вы создали веб-страницу, используя мою книгу, просто пришлите мне URL-адрес вашей страницы, чтобы его можно было включить в мою страницу для читателей. А пока можете заглянуть на страницу для читателей, которую я создал для других своих книг в Интернете.
Не стесняйтесь ссылаться на меня! Вы можете ссылаться на мою книгу CSS по адресу http: // www.callihan.com/cssbook/, в другие мои книги по адресу http://www.callihan.com/webbooks/ или на мой веб-сайт по адресу http://www.callihan.com/.
Вернуться в меню.
Исправления и опечатки
Несмотря на то, что делается все возможное, чтобы попытаться свести к минимуму ошибки, некоторые всегда крадутся. Для исправлений, которые могут повлиять на смысл текста, см. Страницу исправлений.
Вернуться в меню.
Ресурсы и инструменты CSS
В этом разделе вы найдете множество различных ресурсов, которые могут оказаться полезными для получения дополнительных сведений о CSS и публикации в Интернете:
- Справочник ресурсов CSS.Здесь можно найти ссылки на документацию по CSS, справочные материалы, руководства и учебные пособия.
- Каталог программного обеспечения CSS. Поищите здесь ссылки на программные инструменты CSS, которые вы можете скачать и попробовать.
- Ссылки для веб-публикаций. Здесь можно найти ссылки на веб-публикации, ресурсы и информацию HTML.
- Веб-инструменты. Здесь можно найти ссылки на программные инструменты веб-публикации.
- Интернет-книги. Посмотрите здесь, чтобы ознакомиться с другими моими книгами по веб-публикации и HTML.
- Бюджетные веб-хосты.Здесь можно найти ресурсы и информацию о бюджете и бесплатном веб-хостинге.
Изучайте HTML 4 на выходных (4-е издание), Стив Каллихан
Вы можете легко выучить весь HTML, который вам нужно знать за выходные! Не нужно быть программистом или технарем. HTML для всех! Я написал две книги, одну для Windows, а другую для Macintosh, которые призваны помочь вам начать работу с HTML для создания привлекательных и эффективных веб-страниц в кратчайшие сроки:
Закажите каскадных таблиц стилей (CSS) по примеру на Amazon.com за $ 29,19. Вы экономите 10,80 $ (скидка 27%). Рейтинг четыре звезды из пяти!
«Книга Стива выходит далеко за рамки простого предоставления вам свойств и значений, которые вы можете использовать с CSS, но он показывает вам (на примере), КАК и ПОЧЕМУ их использовать. Очевидно, что в эту книгу было вложено много работы. Я настоятельно рекомендую всем, кто хочет изучить CSS простым способом. Пять звезд! » — из отзыва покупателей на Amazon.com.
Вернуться в меню.
|
Чтобы узнать об Art.com, просто нажмите «Почему присоединиться к Art.com?». Начните зарабатывать на своем веб-сайте уже сегодня! Зарегистрироваться можно быстро, легко и совершенно бесплатно. Присоединяйтесь к партнерской программе Art.com сегодня!
Вы номер посетителя
с 3 января 2002 года.
Узнайте больше о каскадных таблицах стилей
CSS — один из краеугольных камней Интернета. Без CSS веб-страницы были бы скучными и скучными.
Внешний вид:
CSS — отличный язык для изучения новичками, потому что его легко понять, и существует множество ресурсов и учебных пособий, показывающих, как его использовать.
Фактически, одним из первых вещей, которые я узнал в области веб-дизайна и разработки, был CSS.
Синтаксис и концепции, составляющие CSS, имеют смысл даже для тех, кто не разбирается в технологиях. Кроме того, мы каждый день видим CSS на сайтах, которые мы знаем и любим. (Чтобы было легче понять, как и почему он используется.)
Что такое CSS?
CSS означает C ascading S tyle S heets, и почти все веб-страницы и пользовательские интерфейсы, написанные с помощью HTML, используют его.CSS — это язык таблиц стилей , который добавляет стили и форматирование к документам, написанным на языке разметки.
В настоящее время в своей третьей версии (часто называемой CSS3) CSS добавляет презентацию к веб-странице, тогда как HTML создает структуру страницы .
примечание
Поймите, что HTML и CSS работают вместе. Однако веб-страницу можно создать только с помощью HTML. (Но было бы не очень красиво.)
Существуют различные способы включения CSS в вашу HTML-страницу, но наиболее распространенным является использование внешней таблицы стилей с использованием .css расширение файла (Эта внешняя таблица стилей является наиболее предпочтительной, поскольку она гораздо более эффективна при внесении изменений.)
Однако есть и другие методы для включения стилей CSS, такие как внутренне, (стиль, определенный в верхней части HTML-страницы) и встроенный (поэтому добавление стиля прямо к конкретному тегу HTML).
Почему важен CSS?
CSS важен, потому что позволяет веб-дизайнерам, разработчикам, блогерам и т. Д. Делать наши веб-сайты уникальными и привлекательными.CSS дает нам возможность поиграть с макетом страницы, настроить цвета и шрифты, добавить эффекты к изображениям и т. Д.
В то время как раньше можно было добавлять стиль с помощью HTML или более простого CSS, CSS3 действительно расширился и дает больше возможностей для творчества.
В конечном итоге, это облегчает нашу жизнь. CSS позволяет разделить представление из структуры (HTML) на разные файлы.
Кому это следует использовать?
CSS идеально подходит для тех, кто хочет создать свой собственный сайт.Или кто-то хочет стать разработчиком или дизайнером. На самом деле, для всех, кто хочет изучить основы работы с веб-сайтом, CSS — отличное место для начала.
Черт возьми, если вы графический дизайнер, наличие у вас навыков CSS — огромное преимущество, когда дело доходит до маркера вакансии.
В настоящее время существуют более продвинутые языки расширения CSS, которые предлагают еще большую эффективность рабочего процесса — например, Sass. Но прежде чем переходить к ним, важно понять, как работает CSS и синтаксис.
Некоторые особенности CSS3
Есть много возможностей CSS.Вот лишь некоторые из них, о которых следует знать.
Каскадное
Как я упоминал ранее, CSS означает каскадные таблицы стилей. Вам может быть интересно, что это за каскадный бизнес.
Из Википедии:
«Таблица стилей с наивысшим приоритетом управляет отображением содержимого. Объявления, не установленные в источнике с наивысшим приоритетом, передаются источнику с более низким приоритетом, например, в стиле пользовательского агента. Этот процесс называется каскадом ».
А?
По сути, существует каскадного порядка для установленных вами стилей CSS.Скажем, в начале вашей внешней таблицы стилей вы делаете все абзацы синим шрифтом. Но затем внутри своего HTML-документа вы выделяете один абзац красным цветом.
Из-за каскадного порядка объявление красного стиля выиграет у синего. И этот абзац будет красным.
Каскадный порядок
Вообще говоря, все стили будут «каскадированы» в новую «виртуальную» таблицу стилей по следующим правилам, где номер четыре имеет наивысший приоритет:
- Браузер по умолчанию
- Внешняя таблица стилей
- Внутренняя таблица стилей (в головной части)
- Встроенный стиль (внутри элемента HTML)
(Дополнительные сведения о каскадировании см. В этой статье.)
Это может сбить с толку новичков. Не волнуйся. Это что-то вроде порядка операций в математике или что-то в этом роде.
И каскадирование — это хорошо. Поскольку, скажем, вы установили цвет для всех своих абзацев на веб-сайте, вы можете позже изменить цвет абзаца для одной страницы или раздела.
CSS упрощает доступность
Раньше настройка файлов HTML так, чтобы они были доступны для программ чтения с экрана и других методов, было проблемой. CSS3 сделал это проще.
Опять же, взято из Wiki:
CSS может также разрешить представление одной и той же страницы разметки в разных стилях для разных методов рендеринга, таких как на экране, в печати, голосом (при чтении в речевом браузере или программе чтения с экрана) и на шрифте Брайля. базовые, тактильные устройства.
Наличие доступного веб-сайта важно по многим причинам. О том, почему, читайте здесь.
Отлично подходит для мобильных устройств благодаря Media Queries
Как и HTML5, CSS3 также был разработан, чтобы быть более удобным для мобильных устройств.
Чтобы ваш веб-сайт выглядел привлекательно на нескольких экранах, в CSS3 есть замечательная функция, которая называется медиа-запросов .
Медиа-запросы позволяют форматировать презентацию для экранов разных размеров, таких как планшет, мобильный телефон или компьютер, без изменения самого содержимого. Ура!
Узнайте больше о медиа-запросах здесь.
CSS-фреймворки
Эти CSS-фреймворки следуют идее облегчения жизни. Они отлично подходят для быстрого прототипирования, но также позволяют настраивать.
Два самых популярных фреймворка CSS — это Bootstrap и Foundation.
Я никогда не работал с Foundation, но слышал, что он чем-то похож на Bootstrap. И я очень люблю Bootstrap.
Серьезно, я использую Bootstrap для всего, что я создаю, от сайтов WordPress до статических сайтов, а теперь совсем недавно и для веб-приложений.
Анимация CSS
С CSS3 появилась анимация. Это правильно.
Раньше, чтобы анимировать что-то маленькое на вашем сайте, вам приходилось полагаться на JavaScript.Теперь с CSS3 добавить небольшой эффект анимации просто.