Какие методологии написания CSS знаешь

Ответ

BEM (Block, Element, Modifier) – популярная методология, где:

  • Block – независимый компонент (.card)
  • Element – часть блока (.card__title)
  • Modifier – вариация блока/элемента (.card--wide)

Пример:

.card { /* Block */ }
.card__title { /* Element */ }
.card--featured { /* Modifier */ }

OOCSS (Object-Oriented CSS) – разделение на структуру и оформление:

/* Structure */
.button { display: inline-block; }

/* Skin */
.btn-primary { background: blue; }

SMACSS (Scalable Modular Architecture) – разделение стилей на категории:

  • Base (reset, базовые стили)
  • Layout (сетка, шапка, подвал)
  • Module (компоненты)
  • State (активные/неактивные состояния)
  • Theme (темы)

ITCSS (Inverted Triangle CSS) – организация стилей от общих к конкретным:

  1. Settings (переменные)
  2. Tools (миксины)
  3. Generic (reset)
  4. Elements (теги)
  5. Objects (структурные классы)
  6. Components (UI компоненты)
  7. Utilities (вспомогательные классы)

Ответ 18+ 🔞

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

Вот смотри, есть у тебя, допустим, блок. Просто блок, сука. Кнопка там или карточка. Это Блок (Block). Самостоятельная хуйня, которая сама по себе живет. Называешь её, например, .card. Всё, приехали.

А внутри этого блока есть какие-то детальки, пиздюльки. Заголовок, картинка, описание. Это Элемент (Element). И чтобы всем было понятно, что эта деталька — часть блока, её называют так: .card__title. Два подчеркивания, блядь! Это как клеймо. Смотришь и сразу ясно: "А, это заголовок внутри карточки, а не какая-то левая хуйня сбоку плавающая".

Ну и бывает, что блок или элемент надо чуть подрихтовать. Сделать пошире, выделить цветом, или наоборот — спрятать нахуй. Это Модификатор (Modifier). .card--wide или .card__title--hidden. Два дефиса! Запомни, ёпта, два дефиса! А то намешаешь — потом сам же и будешь ебаться.

.card { /* Это сам блок, мать его */ }
.card__title { /* Это его дитёныш, элемент */ }
.card--featured { /* А это он же, но в шляпе, модификатор */ }

А теперь, блядь, другие ребята подъехали — OOCSS. Они говорят: "Зачем нам эту сложную хуйню с подчеркиваниями? Давайте разделим всё на структуру и шкурку!". Структура — это как кости: display, padding, margin. А шкурка — это уже красота: background, color.

/* Кости, структура */
.button { display: inline-block; padding: 10px; }

/* Шкурка, расцветочка */
.btn-primary { background: blue; color: white; }
.btn-secondary { background: grey; color: black; }

Получается, одна кнопка может быть и синей, и серой, но костяк у неё один. Удобно, внатуре. Но не для всех случаев, конечно.

Дальше — SMACSS. Тут уже подходят с размахом, для больших проектов. Раскладывают всё по папочкам-категориям, как бельё в комоде.

  • Base — это вообще всё сбрасываем, reset.css там, базовые стили для body, html. Фундамент, блядь.
  • Layout — это крупные куски макета: шапка, подвал, сайдбар, сетка. То, что страницу на секции делит.
  • Module — а вот это уже наши компонентики: те же карточки, кнопки, галереи. То, что можно тырить с проекта на проект.
  • State — состояния, ёбта! .is-active, .is-hidden, .is-loading. Что-то включилось, выключилось, спряталось.
  • Theme — если вдруг захочешь тёмную тему или новогоднюю — вот тебе отдельная папка.

И наконец, ITCSS. Это вообще, блядь, философия какая-то. Представь перевёрнутый треугольник. Сверху — самое общее и абстрактное, внизу — самое конкретное и важное. Идея в том, чтобы стили не перебивали друг друга почём зря.

  1. Settings — глобальные переменные (цвета, шрифты). Без них нихуя не начинается.
  2. Tools — миксины, функции. Инструментарий, блядь.
  3. Generic — опять reset, нормализация стилей. Подготовка поля.
  4. Elements — стили для голых HTML-тегов: h1, a, p. Ещё без классов.
  5. Objects — структурные, каркасные классы вроде .container, .layout. Скелет проекта.
  6. Components — вот они, наши красавцы! Кнопки, карточки, формы. Всё, что видит юзер.
  7. Utilities — вспомогательные, самые сильные классы, которые всё перебивают: .text-center, .mt-20, .hidden. Их пихают в самый конец, и они всех ебут.

Короче, выбор за тобой. Хочешь строго и понятно — BEM. Хочешь разделить логику и внешку — OOCSS. Делаешь огромный портал — SMACSS или ITCSS. Главное — не мешай всё в одну кучу, а то получится пиздец, а не стили.