Ответ
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) – организация стилей от общих к конкретным:
- Settings (переменные)
- Tools (миксины)
- Generic (reset)
- Elements (теги)
- Objects (структурные классы)
- Components (UI компоненты)
- 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. Это вообще, блядь, философия какая-то. Представь перевёрнутый треугольник. Сверху — самое общее и абстрактное, внизу — самое конкретное и важное. Идея в том, чтобы стили не перебивали друг друга почём зря.
- Settings — глобальные переменные (цвета, шрифты). Без них нихуя не начинается.
- Tools — миксины, функции. Инструментарий, блядь.
- Generic — опять reset, нормализация стилей. Подготовка поля.
- Elements — стили для голых HTML-тегов:
h1,a,p. Ещё без классов. - Objects — структурные, каркасные классы вроде
.container,.layout. Скелет проекта. - Components — вот они, наши красавцы! Кнопки, карточки, формы. Всё, что видит юзер.
- Utilities — вспомогательные, самые сильные классы, которые всё перебивают:
.text-center,.mt-20,.hidden. Их пихают в самый конец, и они всех ебут.
Короче, выбор за тобой. Хочешь строго и понятно — BEM. Хочешь разделить логику и внешку — OOCSS. Делаешь огромный портал — SMACSS или ITCSS. Главное — не мешай всё в одну кучу, а то получится пиздец, а не стили.