Что такое каскадирование в CSS?

Ответ

Каскадирование (Cascading) — это механизм CSS, который определяет, какие стилевые правила применяются к элементу, когда несколько правил могут на него влиять. Решение принимается на основе трёх ключевых факторов: порядка, специфичности и важности.

Основные принципы:

  1. Порядок источников и объявлений: Позднее объявленное правило (ниже в коде) имеет приоритет. Стили из таблицы пользователя (браузера) имеют низший приоритет, авторские (ваши) — средний, а !important в авторских — высший.
  2. Специфичность селектора: Каждому селектору присваивается вес. Более специфичный селектор переопределяет менее специфичный.
    • Вес: инлайн-стиль (1000) > ID (100) > класс/псевдокласс/атрибут (10) > тег/псевдоэлемент (1).
  3. Директива !important: Объявление с !important имеет наивысший приоритет, но её чрезмерное использование нарушает естественный каскад и усложняет поддержку кода.

Пример на практике:

<p id="unique" class="text">Пример текста</p>
/* Специфичность: 1 (тег) */
p { color: blue; }
/* Специфичность: 10 (класс). Победит, т.к. 10 > 1 */
.text { color: red; }
/* Специфичность: 100 (ID). Победит, т.к. 100 > 10 */
#unique { color: green; }
/* Принудительный высший приоритет благодаря !important */
p { color: yellow !important; } /* Этот цвет и будет применён */

Каскадирование — фундаментальный принцип CSS, позволяющий эффективно управлять стилями и их переопределениями.

Ответ 18+ 🔞

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

Вот как он, сука, думает:

  1. Порядок. Принцип простой, как три копейки: кто последний встал — того и тапки. Правило, которое в коде написано ниже, обычно и победит. Ну и ещё есть иерархия: стили браузера (этот самый «user agent stylesheet») — самые слабые, их все ебут. Твои авторские стили — уже круче. А если ты в своём стиле ещё и !important прилепил — ну тут уже всем пизда, это как козырь в дураке, блядь.

  2. Специфичность. Вот это, ёпта, самая мякотка. Каждому селектору дают вес, как боксёру. Идёт на ринг p против #super-puper-id — ясно, кто выйдет с разбитой мордой. Вес считают так:

    • Инлайн-стиль прямо в HTML (style="...") — это царь и бог, вес 1000.
    • Селектор по id — вес 100. Крутой пацан.
    • Класс, псевдокласс (:hover), атрибут ([type="text"]) — вес 10. Уже что-то.
    • Тег (p, div) или псевдоэлемент (::before) — вес 1. Ну, мелочь, блядь.

    Кто суммарно набрал больше очков — тот и диктует моду. Просто и гениально, как топор.

  3. !important. А это, блядь, волшебная пипка. Написал это слово — и всё, приехали. Твой стиль становится важнее всех, даже важнее инлайн-стиля. Сила непомерная. Но пользоваться ей — всё равно что молотком гвозди в стену из говна забивать. Сначала весело, а потом всё разваливается, и поддерживать этот цирк — терпения ноль, ебать.

Смотри, как это на практике выглядит, чтобы не быть, прости господи, распиздяем:

<p id="unique" class="text">Пример текста</p>
/* Специфичность: 1 (просто тег). Скажет "я синий!" */
p { color: blue; }
/* Специфичность: 10 (класс). Скажет "пошёл нахуй, я красный!" (10 > 1) */
.text { color: red; }
/* Специфичность: 100 (ID). Скажет "вы оба лузеры, я зелёный!" (100 > 10) */
#unique { color: green; }
/* А тут прилетает читер с !important. И всем на них насрать. */
p { color: yellow !important; } /* Вот этот жёлтый цвет и будет, пиздец. */

Вот и весь сказ, блядь. Каскадирование — это основа, без неё в CSS нихуя не сделаешь, будешь как обезьяна с гранатой: стили будут применяться, а почему — хуй его знает. Так что держи эту схему в голове, и будет тебе счастье.