Не пишите CSS

О том как CSS подвержен второму закону термодинамики. Проблемы, заблуждения и способы их решения. О том, почему для больших проектов утилитарные классы оказываются лучше БЭМ

Road ends sign

Как сверстать?

Всем привет!

План

  1. Исторический экскурс и семантическая вёрстка
  2. Проблемы CSS
  3. OOCSS и БЭМ
  4. Проблемы контейнеров
  5. Препроцессоры
  6. Проблемы препроцессоров
  7. Как перестать писать CSS?
  8. Что дальше?

Исторический экскурси семантическая вёрстка

Spiral staircase

Сначала был HTML

HTML 3.2 (1997)

<img align="right" src="alice.jpg" />
<font face="Arial" size="4" color="firebrick">
    Похоже на экспорт Word'а
</font>

CSS 1.0 (1996)

Семантическая верстка

\section{Семантическая вёрстка}
\begin{definition}
    \emph{Семантической} вёрсткой называется разметка
    смысла текста, а не его \textit{оформления}.

    Таким образом оформление отделяется, и может быть
    изменено независимо от содержимого.
\begin{definition}

Проблемы CSS

Hole in floor

Проблемы CSS

Что хорошо для книги не всегда хорошо для сайта

Книги не расширяются и не изменяются после публикации

Сайты превращаются в порталы, расширяют функциональность, эволюционируют и меняют дизайн

Проблемы CSS

Сложность селекторов

Специфичность и вес селекторов

input[type~="checkbox"].checkbox + label:before {/*...*/}

[class^="icon-"], [class*=" icon-"] {/*...*/}

Проблема чистого листа

Blank wall prepared to be colored

OOCSS и БЭМ

Raspberry

Object-Oriented CSS

Блок__Элемент_Модификатор

Какие проблемы решены

Страница новостей

Страница событий

Страница авторов

Страница партнёров

Новые требования

Добавим модификаторов

<div class="card-item card-item_wide card-item_shadowed
card-item_rulled card-item_with-footer card-item_hot
card-item_starred>

Проблемы контейнеров

Containers

Проблемы контейнеров

Препроцессоры

Five stack of stone fragments

Какие проблемы решаются

Проблемы препроцессоров

Blue wall with chaos of wires

Проблемы препроцессоров

Как перестать писать CSS?

A men looks at the lake

Утилитарные классы

<div class="p-2 my-1 d-f w-25">
    <p class="bg-success">
        ...
    </p>
</div>

Преимущества

КомпонентыUtility-first

Что дальше?

Long road through desert

Что дальше?

Почитать

Вопросы?

Спасибо за внимание!