язык, предназначенный для описания внешнего вида веб-страниц
CSS-файл содержит набор правил, которые описывают, как определенные элементы HTML должны отображаться в браузере
p {
color: blue;
font-size: 16px;
}
Первая спецификация CSS, включавшая базовые стили
h1 {
color: blue;
font-size: 24px;
}
базовая стилизация текста, цвета, отступов, шрифтов
Добавлены относительные единицы, медиа-типы, z-index, стили для таблиц
@media screen and (max-width: 600px) {
body {
background-color: lightgray;
}
}
запросы, позиционирование (
absolute
,
relative
,
fixed
), псевдоэлементы (
::before
,
::after
)
Уточнён стандарт, исправлены ошибки CSS2. Поддержка
min-width
и
max-width
div {
max-width: 400px;
min-width: 200px;
}
улучшенная совместимость браузеров
Разделён на модули: селекторы, анимации, градиенты, flexbox, grid
div {
border-radius: 10px;
box-shadow: 5px 5px 10px gray;
transition: all 0.3s ease-in-out;
}
CSS4 как отдельная спецификация не существует, но есть улучшения
:has(> img) {
border: 2px solid red;
}
index.html
Стили находятся в отдельном файле с расширением .css, который подключается в <head> через тег <link>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Внешний CSS</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>Заголовок</h1>
<p>Текст абзаца</p>
</body>
</html>
styles.css
h1 {
color: blue;
font-size: 24px;
}
p {
color: darkgray;
font-size: 16px;
}
styles.css
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Внутренний CSS</title>
<style>
h1 {
color: red;
}
p {
font-size: 18px;
color: green;
}
</style>
</head>
<body>
<h1>Пример заголовка</h1>
<p>Пример текста</p>
</body>
</html>
<p style="color: blue; font-size: 20px;">Пример встроенного CSS</p>
правило, определяющее, к каким элементам HTML будут применяться заданные стили
header {
font-size: 18px;
}
#main-text {
font-size: 22px;
}
.highlight {
color: red;
}
*
)
Применяет стили ко всем элементам на странице
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
Применяются ко всем HTML-элементам определенного типа
p {
font-size: 18px;
color: darkgray;
}
h1 {
color: blue;
}
.
)
Выбирают все элементы с указанным классом
<p class="highlight">Этот абзац будет выделен.</p>
.highlight {
background-color: yellow;
}
#
)
Применяются к единственному элементу с указанным id
<p id="unique-text">Этот абзац имеет уникальный стиль.</p>
#unique-text {
color: red;
font-weight: bold;
}
A, B, C
)
Позволяет одновременно применять стили к нескольким элементам
h1, h2, p {
color: blue;
}
A > B
)
Выбирает только прямых потомков указанного элемента
<div>
<p>Этот абзац будет зеленым.</p>
<span>
<p>А этот — нет, так как он не прямой потомок `div`.</p>
</span>
</div>
div > p {
color: green;
}
+
и
~
)
A + B
- выбирает только следующий сразу за A элемент B
A ~ B
- выбирает все следующие элементы B после A
<h1>Заголовок</h1>
<p>Этот параграф станет красным.</p>
<p>Этот — нет, так как не идет сразу после `h1`.</p>
h1 + p {
color: red;
}
h1 ~ p {
color: blue;
}
Выбирают элементы по их атрибутам
<input type="text">
<input type="password">
input[type="text"] {
border: 2px solid blue;
}
:hover
,
:nth-child
,
:focus
Позволяют изменять стили элементов в зависимости от их состояния
<a href="#">Наведи на меня!</a>
a:hover {
color: red;
}
::before
,
::after
Добавляют виртуальные элементы перед и после содержимого элемента
<p>Важный текст</p>
p::before {
content: "⚡ ";
color: orange;
}
Стили браузера (User Agent Stylesheet)
– встроенные стили браузера
Стили пользователя
– если пользователь изменил настройки браузера
<p style="color: red;">Этот текст будет красным</p>
p {
color: blue;
}
стили применяются в определенном порядке, а при конфликте правил действует система приоритетов
Каскадность
– механизм объединения стилей из разных
источников.
Приоритетность (специфичность)
– система, определяющая, какое правило будет
применено
Специфичность определяет, какой стиль применяется при конфликте CSS-правил
A
– количество id селекторов (
#id
)
B
– количество классов (
.class
), атрибутов (
[attr]
), псевдоклассов (
:hover
)
C
– количество тегов (
div
,
p
,
h1
)
Специфичность определяет, какой стиль применяется при конфликте CSS-правил
| Метод | Баллы |
Теги (
div, p, h1
)
|
1 балл |
| Классы (.class), атрибуты ([attr]), псевдоклассы (:hover) | 10 баллов |
| Идентификаторы (#id) | 100 баллов |
Inline-стиль
style=""
|
1000 баллов |
| !important | максимальный приоритет |
div p { color: blue; } /* (0,0,2) */
.big { color: green; } /* (0,1,0) */
#title { color: red; } /* (1,0,0) */
p.big { color: purple; } /* (0,1,1) */
<div> <p id="title" class="big"> Какого
цвета будет текст? </p> </div>
| Селектор | Расчет | Специфичность |
div p |
(0,0,1) + (0,0,1) = (0,0,2) | (0,0,2) |
.big |
(0,1,0) | (0,1,0) |
#title |
(1,0,0) | (1,0,0) |
p.big |
(0,0,1) + (0,1,0) = (0,1,1) | (0,1,1) |
p { color: blue; } /* (0,0,1) */
.big { color: green; } /* (0,1,0) */
#title { color: red; } /* (1,0,0) */
<p id="title" class="big">Какого цвета будет этот текст?</p>