3.10. CSS
Разработчику
Аналитику
Тестировщику
Архитектору
Инженеру
Общее о стилях
Что такое CSS?
★ CSS (Cascading Style Sheets) – язык стилей, который определяет внешний вид HTML-документа, отвечающий за цвета, шрифты, расположение элементов, визуальные эффекты на веб-странице.
Какие возможности предоставляет CSS?
- задавать внешний вид элементов: цвета, шрифты, размеры, формы, тени, прозрачность;
- превращает «голый» текст в графически оформленный документ;
- управляет тем, где и как элементы будут отображаться относительно друг друга;
- поддерживает гибкие и адаптивные макеты, которые меняются под разные устройства и ориентации экрана;
- возможность создавать плавные переходы между состояниями элементов;
- добавлять движения, трансформации, эффекты при взаимодействии пользователя;
- реакции на действия пользователя (наведение, клик, фокус) и изменение внешнего вида в ответ;
- управление начертанием текста: размер, межстрочный интервал, гарнитура, вес, стиль;
- возможность рисовать фигуры, градиенты, тени, рамки, маски и другие визуальные элементы без изображений;
- скрывать элементы или убирать их из потока документа, не удаляя из разметки.
При работе с CSS можно встретить и LESS – препроцессор CSS, который расширяет возможности CSS, добавляя переменные, вложенные правила, функции и миксины, что упрощает написание и поддержку стилей. LESS-код компилируется в обычный CSS перед использованием в браузере.
Как устроен CSS?
К примеру, можно детально настроить оформление и сделать кнопку красивой, добавив цветов, теней и других особенностей:
CSS состоит из:
- стилей – наборов свойств (например,
color: red;) - селекторов – указателей, какие элементы стилизовать (
h1,.class,#id); - правил – комбинаций селекторов и стилей.
CSS-правило состоит из двух частей: селектора и блока объявлений. Селектор указывает, к каким элементам применяется правило. Блок объявлений заключён в фигурные скобки и содержит одно или несколько объявлений. Каждое объявление состоит из свойства и его значения, разделённых двоеточием.
Пример:
h1 {
color: navy;
font-size: 24px;
}
Здесь h1 — селектор, color и font-size — свойства, navy и 24px — значения.
Представим, что HTML — это каркас дома, а CSS — всё то, что делает этот дом красивым, удобным и живым: краска, мебель, свет, оформление.
Давайте разберёмся, как с помощью CSS добраться до нужных частей этого дома, чтобы их изменить.
Когда вы пишете HTML, вы используете теги, например:
<h1>Заголовок</h1>
<p>Абзац текста</p>
<a href="#">Ссылка</a>
Каждый тег — это элемент: <h1>, <p>, <a> и т.д.
Тег — базовая единица разметки HTML, обозначающая определённый тип содержимого или структуру на странице.
Примеры: <p> для абзаца, <h1> для заголовка первого уровня, <div> для универсального контейнера.
Каждый тег становится HTML-элементом в DOM-дереве. Элемент может содержать текст, другие элементы или оставаться пустым, как <br>.
В CSS тег используется как селектор по типу, например p { color: black; }.
Таким образом, мы пишем:
имяHTMLэлемента {
свойство: значение;
свойство: значение
}
Элемент — это основной строительный блок страницы. В CSS вы можете выбирать элементы по их имени и задавать им стиль.
Пример:
p {
color: blue;
}
— это значит: все абзацы (<p>) сделай синими.
Классы
Иногда нужно стилизовать только некоторые элементы. Например, только особые ссылки должны быть красными.
Мы не хотим красить ВСЕ ссылки, только конкретную. Придётся точечно, в HTML-странице, пометить нужный элемент.
<элемент class="имя класса"></элемент>
Для этого в HTML есть атрибут class:
<a href="#" class="button">Нажми меня</a>
<a href="#">Обычная ссылка</a>
Теперь в CSS можно выбрать только те элементы, у которых есть класс button:
.button {
background-color: red;
padding: 10px;
text-decoration: none;
}
★ Класс (например, .button) – именованный стиль, который можно применять к разным элементам. Это как ярлык или бирка, которую вы прикрепляете к элементу, чтобы потом легко найти его и применить нужный стиль. Один и тот же класс может быть у нескольких элементов.
Класс начинается с точки: .button.
Селекторы
Что такое селектор?
★ Стиль – конкретное свойство (например, font-size: 16px).
CSS применяется к элементам HTML через селекторы.
Селекторы (англ. select – выбор), «выборщики», определяют к каким элементам DOM применять стили. Селектор — синтаксическая конструкция в CSS, которая указывает, к каким элементам применяется набор стилевых правил.
Селекторы могут быть простыми или составными:
- по тегу —
h2; - по классу —
.highlight; - по идентификатору —
#sidebar; - по атрибуту —
[disabled]или[type="email"]; - псевдоклассам —
:hover,:focus,:nth-child(2n); - псевдоэлементам —
::before,::first-line.
Селекторы задают контекст применения правил и позволяют адресовать элементы с высокой точностью.
Идентификатор — уникальное имя элемента, задаваемое в HTML через атрибут id. Каждый идентификатор должен встречаться на странице только один раз.
<элемент id="идентификатор"></элемент>
Пример: <div id="main-navigation">…</div>.
В CSS идентификатор выбирается с помощью символа решётки:
#идентификатор {
свойство: значение
}
Пример: #main-navigation { background: white; }.
Идентификаторы применяются для точечной стилизации уникальных компонентов или для внутренних ссылок (<a href="#main-navigation">Перейти</a>).
Атрибут — дополнительная информация, присоединённая к HTML-тегу в виде пары «имя=значение».
Примеры: class="button", href="/home", src="image.jpg", id="search-box".
Атрибуты расширяют поведение и семантику элементов: они могут управлять внешним видом, взаимодействием, доступностью и техническими параметрами.
CSS поддерживает селекторы по атрибутам:
[target]— любой элемент с атрибутомtarget;[type="submit"]— кнопки сtype="submit";[lang^="ru"]— элементы с языком, начинающимся наru.
Комбинирование селекторов — способ создания более точных и контекстно-зависимых правил, где применяется одновременно несколько условий.
Основные типы комбинаций:
-
Последовательное указание — элемент должен соответствовать всем селекторам:
div.button.active—<div class="button active">. -
Дочерний селектор —
div > p— применить стиль к<p>, если он непосредственный дочерний элемент<div>. -
Потомок —
nav a— применить стиль к любой ссылке внутри<nav>, на любом уровне вложенности. -
Соседний (следующий) —
h1 + p— применить стиль к первому<p>, идущему сразу после<h1>. -
Общий сосед —
h1 ~ p— применить стиль ко всем<p>, идущим после<h1>в одном родительском контейнере.
Комбинирование повышает точность адресации и позволяет избегать лишних классов.
Примеры:
- по тегу –
p {…}; - по классу -
.header {…}; - по идентификатору -
#main {…}; - по атрибуту –
[type= "text"] {…}; - комбинированные –
div.button.active {…},div > p(дочерний),h1 + p(соседний).
То есть, исходные данные для селекторов – это:
- теги (
<p>,<div>,<h1>) –p { color: red; }; - классы (атрибут
class="button") -.button { … }’ - идентификаторы (атрибут
id="header") -#header { … }; - атрибуты (значения атрибутов).
Соответственно, выбираются данные так - #id, .class, тег.
Пример: у нас есть HTML для стилизации:
<div class="box" id="main-box">Привет, мир!</div>
Подключаем CSS к этому элементу:
/* По тегу, напрямую */
div { font-size: 16px; }
/* По классу, через точку*/
.box { background: yellow; }
/* По ID, через # */
#main-box { border: 1px solid black; }
Логика написания самого селектора и свойств такова:
- выбираем элемент (селектор);
- пишем свойства (параметры стиля).
селектор {
свойство: значение;
свойство: значение;
}
Селектор по тегу
Обращается к элементам по имени HTML-тега:
p { margin: 1em 0; }
Селектор по классу
Выбирает все элементы с заданным значением атрибута class. Обозначается точкой:
.highlight { background: yellow; }
Селектор по идентификатору
Выбирает единственный элемент с уникальным значением атрибута id. Обозначается решёткой:
#header { position: fixed; }
Универсальный селектор
Обозначается звёздочкой * и выбирает все элементы на странице:
* { box-sizing: border-box; }
Селектор потомка
Выбирает элементы, находящиеся внутри другого элемента на любом уровне вложенности:
nav a { text-decoration: none; }
Селектор по атрибуту
Выбирает элементы по наличию или значению атрибута:
input[type="email"] { border: 1px solid blue; }
[disabled] { opacity: 0.5; }
Комбинированные селекторы
Позволяют точно адресовать элементы, комбинируя условия:
div.button.active— элемент<div>с классамиbuttonиactive;ul > li— прямые дочерние<li>внутри<ul>;h1 + p— первый<p>, следующий сразу после<h1>;h1 ~ p— все<p>, следующие за<h1>в одном родителе.
Перечисление селекторов
Несколько селекторов можно объединить через запятую, чтобы применить одинаковые стили:
h1, h2, h3 { font-family: sans-serif; }