0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p><strong>HTML</strong>задаёт<strong>структуру</strong>.<strong>CSS</strong>задаёт<strong>оформление</strong>.</p>
1
<p><strong>HTML</strong>задаёт<strong>структуру</strong>.<strong>CSS</strong>задаёт<strong>оформление</strong>.</p>
2
<p>CSS - это отдельный язык со своим форматом и правилами, но он создан специально для HTML. С помощью CSS можно описать внешний вид страницы и отдельных элементов. Например, цвет текста, размер шрифта, размеры и отступы картинок, рамки вокруг элементов, закругления в фотках и так далее.</p>
2
<p>CSS - это отдельный язык со своим форматом и правилами, но он создан специально для HTML. С помощью CSS можно описать внешний вид страницы и отдельных элементов. Например, цвет текста, размер шрифта, размеры и отступы картинок, рамки вокруг элементов, закругления в фотках и так далее.</p>
3
<p>CSS расшифровывается как Cascading Style Sheets. Сейчас мы разберёмся, как задавать стили и причём тут слово "каскад".</p>
3
<p>CSS расшифровывается как Cascading Style Sheets. Сейчас мы разберёмся, как задавать стили и причём тут слово "каскад".</p>
4
<p>Допустим, у нас есть такой HTML:</p>
4
<p>Допустим, у нас есть такой HTML:</p>
5
<p>Это всё - один абзац, но я добавил переводы строк, чтобы текст просто удобнее было читать на этой странице. В HTML перевод строки не транслируется в реальный перевод строки в итоговой странице. Вместо этого он превратится в один пробел. Несколько переводов строки также превратятся в лишь один пробел. Ну, и несколько пробелов тоже превратятся в один пробел.</p>
5
<p>Это всё - один абзац, но я добавил переводы строк, чтобы текст просто удобнее было читать на этой странице. В HTML перевод строки не транслируется в реальный перевод строки в итоговой странице. Вместо этого он превратится в один пробел. Несколько переводов строки также превратятся в лишь один пробел. Ну, и несколько пробелов тоже превратятся в один пробел.</p>
6
<p>Все варианты ниже приведут к одному результату:</p>
6
<p>Все варианты ниже приведут к одному результату:</p>
7
<p>Для реального перевода строки можно использовать одиночный тег <br>.</p>
7
<p>Для реального перевода строки можно использовать одиночный тег <br>.</p>
8
<p>Мы отвлеклись. Итак, мы хотим добавить к нашему HTML-коду стиль. С помощью CSS-кода ниже мы сделаем так, что у всех элементов p текст внутри будет красным, а размер шрифта будет 20 пикселей:</p>
8
<p>Мы отвлеклись. Итак, мы хотим добавить к нашему HTML-коду стиль. С помощью CSS-кода ниже мы сделаем так, что у всех элементов p текст внутри будет красным, а размер шрифта будет 20 пикселей:</p>
9
<p>Вот живой пример:</p>
9
<p>Вот живой пример:</p>
10
<p><a>https://codepen.io/hexlet/pen/yzGrvX</a></p>
10
<p><a>https://codepen.io/hexlet/pen/yzGrvX</a></p>
11
<ol><li>Первая часть - это<strong>селектор</strong>(selector). Им мы выбираем то, к чему применять стиль.</li>
11
<ol><li>Первая часть - это<strong>селектор</strong>(selector). Им мы выбираем то, к чему применять стиль.</li>
12
<li>Набор стилей указан после селектора в фигурных ({, }) скобках.</li>
12
<li>Набор стилей указан после селектора в фигурных ({, }) скобках.</li>
13
<li>Набор состоит из пар<strong>свойство: значение</strong>(property: value).</li>
13
<li>Набор состоит из пар<strong>свойство: значение</strong>(property: value).</li>
14
</ol><h3>Классы и идентификаторы</h3>
14
</ol><h3>Классы и идентификаторы</h3>
15
<p>Но что если мы хотим применить такой стиль не ко всем параграфам, а только к некоторым? Для подобных задач в HTML и CSS существуют классы (classes).</p>
15
<p>Но что если мы хотим применить такой стиль не ко всем параграфам, а только к некоторым? Для подобных задач в HTML и CSS существуют классы (classes).</p>
16
<p>Мы указали класс у двух абзацев. Теперь нам нужно обновить CSS, потому что сейчас он не учитывает класс и применяет стили ко всем абзацам. Укажем класс:</p>
16
<p>Мы указали класс у двух абзацев. Теперь нам нужно обновить CSS, потому что сейчас он не учитывает класс и применяет стили ко всем абзацам. Укажем класс:</p>
17
<p><strong>Селектор p.red означает "все элементы типа p с классом red".</strong></p>
17
<p><strong>Селектор p.red означает "все элементы типа p с классом red".</strong></p>
18
<p>То есть если мы добавим класс red к элементу другого типа, например, <a class="red" href="https://goo.gl">Goo</a>, то такой элемент не станет красным: стиль работает строго для p.</p>
18
<p>То есть если мы добавим класс red к элементу другого типа, например, <a class="red" href="https://goo.gl">Goo</a>, то такой элемент не станет красным: стиль работает строго для p.</p>
19
<p>Можно освободить стиль от такого ограничения:</p>
19
<p>Можно освободить стиль от такого ограничения:</p>
20
<p><strong>Селектор .red означает "все элементы любого типа с классом red".</strong></p>
20
<p><strong>Селектор .red означает "все элементы любого типа с классом red".</strong></p>
21
<p>Допустим, визуальный стиль нашей страницы изменился, и важные куски текста теперь выделяются не красным цветом с увеличенным шрифтом, а зелёным цветом и курсивом.</p>
21
<p>Допустим, визуальный стиль нашей страницы изменился, и важные куски текста теперь выделяются не красным цветом с увеличенным шрифтом, а зелёным цветом и курсивом.</p>
22
<p>Отлично, но название класса теперь не имеет особого смысла. Это больше не<strong>red</strong>на самом деле. Придётся поменять его на green и изменить класс в HTML у всех соответствующих элементов.</p>
22
<p>Отлично, но название класса теперь не имеет особого смысла. Это больше не<strong>red</strong>на самом деле. Придётся поменять его на green и изменить класс в HTML у всех соответствующих элементов.</p>
23
<p>Но идея лучше - изначально использовать в названиях классов<em>семантический смысл</em>, а не<em>особенность реализации</em>. Например, если таким образом мы выделяли более важные части текста, то стоило назвать класс important:</p>
23
<p>Но идея лучше - изначально использовать в названиях классов<em>семантический смысл</em>, а не<em>особенность реализации</em>. Например, если таким образом мы выделяли более важные части текста, то стоило назвать класс important:</p>
24
<p>Теперь при изменении цветов или любых других деталей этого стиля нам не нужно волноваться о названии: смысл не поменяется, поменяется лишь конкретная реализация.</p>
24
<p>Теперь при изменении цветов или любых других деталей этого стиля нам не нужно волноваться о названии: смысл не поменяется, поменяется лишь конкретная реализация.</p>
25
<p>Иногда в документе есть элемент, который по смыслу может быть только один. Например, в статьях это зачастую заголовок: на странице статьи может быть только один заголовок статьи.</p>
25
<p>Иногда в документе есть элемент, который по смыслу может быть только один. Например, в статьях это зачастую заголовок: на странице статьи может быть только один заголовок статьи.</p>
26
<p>Другой пример - логотип сайта где-нибудь наверху.</p>
26
<p>Другой пример - логотип сайта где-нибудь наверху.</p>
27
<p>Для уникальных "разовых" элементов стоит использовать идентификатор:</p>
27
<p>Для уникальных "разовых" элементов стоит использовать идентификатор:</p>
28
<p>А так можно указать стиль:</p>
28
<p>А так можно указать стиль:</p>
29
<p>Структура и идея такие же, как с классами, но вместо точки . используется решётка #. В этом стиле мы задали шрифт с засечками Georgia и синий цвет в HEX-формате. Введите в гугле "color picker", чтобы поработать с интерактивной палитрой, где можно сгенерировать коды для разных цветов.</p>
29
<p>Структура и идея такие же, как с классами, но вместо точки . используется решётка #. В этом стиле мы задали шрифт с засечками Georgia и синий цвет в HEX-формате. Введите в гугле "color picker", чтобы поработать с интерактивной палитрой, где можно сгенерировать коды для разных цветов.</p>
30
<p>Последний пример немного избыточен, потому что по правилам (спецификации HTML) элемент с идентификатором должен быть уникальным на странице. То есть нет необходимости выбирать именно h1, достаточно сделать так:</p>
30
<p>Последний пример немного избыточен, потому что по правилам (спецификации HTML) элемент с идентификатором должен быть уникальным на странице. То есть нет необходимости выбирать именно h1, достаточно сделать так:</p>
31
<p>Но следить за тем, чтобы идентификаторы были уникальными и не повторялись - ваша задача. Браузер никак не "пожалуется" на нарушение этого правила.</p>
31
<p>Но следить за тем, чтобы идентификаторы были уникальными и не повторялись - ваша задача. Браузер никак не "пожалуется" на нарушение этого правила.</p>