Что такое CSS и как он работает

CSS - это язык стилей: с его помощью ты описываешь, как должна выглядеть HTML-разметка - какого цвета текст, какой ширины блок, где отступ. Сам HTML отвечает только за структуру и смысл страницы, а CSS - за её внешний вид. Браузер читает оба файла вместе и применяет стили к нужным элементам.

Попробуй прямо в этом окне: замени tomato на любой другой цвет, например dodgerblue, и посмотри, что изменится справа - именно так браузер применяет CSS сразу после того, как встретит новое правило.

Что означает аббревиатура CSS

CSS расшифровывается как Cascading Style Sheets - «каскадные таблицы стилей». Ключевое слово здесь «стили»: CSS ничего не добавляет на страницу и не меняет её смысл, он только описывает внешний вид того, что уже размечено в HTML. Слово «каскадные» станет понятнее в третьей части урока - оно про то, как браузер решает, какое правило применить, если их несколько.

Правильное ожидание от CSS: оформление находится отдельно от разметки, в собственном правиле.

<style> p { color: #b5651d; } </style> - настоящее CSS-правило: оформление вынесено отдельно, его легко найти и поменять.

Неправильное ожидание - красить содержимое прямо в HTML, старым способом:

<font color="red">Текст</font> - тег <font> устарел ещё до появления CSS; современные браузеры его иногда понимают, но оформление намертво вшито в разметку, и его неудобно менять.

Из чего состоит CSS-правило

Любое CSS-правило состоит из двух частей: селектора и объявлений в фигурных скобках. Селектор указывает, к какому элементу применить стиль - например, h1 означает «все заголовки первого уровня». Внутри скобок пишут одно или несколько объявлений вида «свойство: значение;» - свойство и значение разделены двоеточием, а в конце каждого объявления обязательно ставится точка с запятой.

h1 { color: #b5651d; font-size: 32px; } - два объявления, каждое закончено точкой с запятой, браузер применит оба.

h1 { color: #b5651d font-size: 32px; } - после первого значения нет точки с запятой; браузер не может понять, где заканчивается одно объявление и начинается другое, и отбрасывает всё правило целиком.

Как браузер применяет CSS к странице

Браузер сначала строит из HTML дерево элементов страницы, затем читает CSS и подбирает, какие правила подходят к каким элементам по их селекторам, - и только после этого рисует страницу на экране с учётом найденных стилей. Если для одного элемента подходит сразу несколько правил с одинаковым селектором, побеждает то, что находится ниже по коду, - это и называется каскадом.

p { color: #b5651d; } p { color: blue; } - итоговый цвет текста будет blue: это правило идёт ниже, и при прочих равных побеждает именно оно.

Неправильное ожидание - что применятся оба правила сразу или что побеждает то, что написано первым:

p { color: blue; } p { color: #b5651d; } - при том же самом раскладе итоговый цвет уже #b5651d, потому что теперь ниже находится он.

Из истории Первый черновик каскадных таблиц стилей опубликовал норвежский разработчик Хокон Ви Ли 10 октября 1994 года - всего за три дня до того, как Netscape анонсировал собственные, несовместимые между собой способы оформления страниц. Официальной рекомендацией W3C (то есть официальным веб-стандартом) CSS первого уровня стал только в декабре 1996 года - тогда же в спецификацию и закрепили саму идею каскада как способа мирно разрешать конфликты между правилами разных авторов. Источник: w3.org - A brief history of CSS.

Частые ошибки новичков

ОшибкаЧто происходитКак исправить
Забыть точку с запятой между объявлениями Браузер не понимает, где заканчивается одно объявление и начинается следующее, и может отбросить всё правило Ставить точку с запятой после каждого объявления, включая последнее
Написать color = red вместо color: red Браузер не узнаёт такое объявление и просто игнорирует его - страница остаётся неоформленной Использовать двоеточие между свойством и значением, а не знак равенства
Оформлять текст старыми HTML-тегами вроде <font> или <center> Оформление жёстко привязано к разметке - его неудобно найти и поменять, а сами теги устарели Выносить любое оформление в CSS-правило, а не в HTML-теги
Ждать, что при конфликте правил победит то, что написано первым При одинаковой силе правил побеждает то, что находится ниже по коду - это осознанное поведение каскада, а не ошибка Размещать более важные правила ниже в файле или явно повышать их специфичность

Шпаргалка

ТерминЗначение
CSSCascading Style Sheets - «каскадные таблицы стилей», язык оформления HTML-страниц
ПравилоСелектор плюс объявления в фигурных скобках, например h1 { color: tomato; }
СелекторЧасть правила, которая указывает, к каким элементам применить стиль
ОбъявлениеПара «свойство: значение;» внутри правила, например color: tomato;
КаскадМеханизм, который решает, какое из конфликтующих правил применить - обычно побеждает то, что ниже по коду

Коротко: отвечаем на вопросы

Можно ли сделать страницу вообще без CSS?

Технически да - браузер всё равно покажет HTML. Но выглядеть это будет как обычный текст сверху вниз, чёрным по белому, без цветов и продуманного расположения блоков - примерно как страницы в самом начале интернета.

Куда лучше подключать CSS - прямо в HTML-файл или отдельным файлом?

Для небольших примеров, как в этом уроке, годится и код внутри самой страницы. Но для настоящего сайта стили обычно выносят в отдельный файл - подробно разберём все три способа подключения CSS в следующем уроке.

Обязательно ли ставить точку с запятой после самого последнего объявления в правиле?

Формально для последнего объявления в правиле браузер её простит. Но если потом добавить ещё одно свойство после него и забыть поставить точку с запятой, оба объявления слипнутся и перестанут работать - поэтому проще всегда ставить её по привычке, после каждого объявления.

Что будет, если браузер не понимает какое-то CSS-свойство или значение?

Браузер молча пропускает именно это объявление и продолжает применять остальные стили дальше - страница не сломается целиком. Это специально заложенное поведение CSS, а не ошибка.

Категория
css
Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×