логотип PurpleSchool
Иконка входа
Вход
логотип PurpleSchool

Принцип каскада в CSS. Полное руководство с примерами

Автор

Дмитрий Нечаев

CSS (Cascading Style Sheets) переводится как каскадные таблицы стилей, и принцип каскада является основой его работы. Каскад определяет порядок применения стилей к элементам HTML, когда несколько правил подходят для одного и того же элемента. Это происходит путем чтения и применения стилей сверху вниз, позволяя более специфичным или более поздним правилам перекрывать предыдущие. В этой статье мы подробно разберем принцип каскада и как он влияет на стилизацию веб-страниц.

Основные составляющие принципа каскада

Принцип каскада основан на трех основных концепциях:

  1. Порядок следования (Source Order): порядок определения правил в стилевых таблицах и HTML-документе.
  2. Специфичность (Specificity): вес селекторов, используемых для назначения стилей.
  3. Важно (Important): использование ключевого слова !important для переопределения других правил.

Порядок следования

Порядок следования играет ключевую роль в том, какие стили будут применены к элементу. Когда два или более правила CSS применимы к одному и тому же элементу и имеют одинаковую специфичность, правило, определенное последним в таблице стилей, будет иметь приоритет.

Пример:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    p {
      color: blue; /* Первое правило */
    }

    p {
      color: green; /* Второе правило */
    }
  </style>
  <title>Принцип каскада</title>
</head>
<body>
  <p>Пример текста</p>
</body>
</html>

В данном примере текст абзаца будет зеленого цвета, так как второе правило (определенное позже) перекрывает первое.

Специфичность

Специфичность определяет, какие стили будут применены к элементу, если несколько правил CSS конфликтуют. Специфичность рассчитывается на основе типов селекторов, используемых в правилах.

Пример:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    p {
      color: blue; /* Специфичность: 1 (селектор тега) */
    }

    .example {
      color: green; /* Специфичность: 10 (селектор класса) */
    }

    #unique {
      color: red; /* Специфичность: 100 (селектор идентификатора) */
    }
  </style>
  <title>Принцип каскада</title>
</head>
<body>
  <p id="unique" class="example">Пример текста</p>
</body>
</html>

В этом примере текст будет красного цвета, так как правило с селектором идентификатора #unique имеет наибольшую специфичность.

!important

Ключевое слово !important позволяет переопределить любые другие правила CSS, даже если они имеют более высокую специфичность или определены позже в стилевой таблице.

Пример:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <style>
    p {
      color: blue !important; /* Важно */
    }

    p {
      color: green; /* Обычное правило */
    }
  </style>
  <title>Принцип каскада</title>
</head>
<body>
  <p>Пример текста</p>
</body>
</html>

В этом примере текст будет синим, несмотря на то, что второе правило определено позже, потому что первое правило использует !important.

Применение каскада на практике

Объединение внешних и внутренних таблиц стилей

Внешние таблицы стилей, подключенные через <link>, внутренние таблицы стилей, определенные внутри тега <style>, и встроенные стили, определенные непосредственно в атрибутах элементов, все они участвуют в каскаде. Браузер применяет стили в следующем порядке:

  1. Внешние таблицы стилей.
  2. Внутренние таблицы стилей.
  3. Встроенные стили (имеют самый высокий приоритет).

Пример:

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="styles.css"> <!-- Внешняя таблица стилей -->
  <style>
    p {
      color: blue; /* Внутренняя таблица стилей */
    }
  </style>
  <title>Принцип каскада</title>
</head>
<body>
  <p style="color: green;">Пример текста</p> <!-- Встроенный стиль -->
</body>
</html>

В данном примере текст будет зеленого цвета, так как встроенные стили имеют самый высокий приоритет.

Заключение

Принцип каскада — это один из основополагающих принципов работы CSS, который определяет, как браузер применяет стили к элементам на веб-странице. Понимание каскада, порядка следования, специфичности и использования !important помогает разработчикам эффективно управлять стилями и создавать предсказуемую верстку. Учитесь использовать каскад в своих проектах, чтобы избегать конфликтов стилей и добиться желаемого результата.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile