Секрет эффективного CSS? Соблюдайте модульность!

alexei10/09/2024 - 20:26
Секрет эффективного CSS? Соблюдайте модульность!

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

Правильная модульность - один из способов уменьшения CSS кода

На этапе подготовки данных на сервере (например, в PHP) следующая история из ленты Facebook может быть одним отдельным объектом. То есть вся логика определения того, какие куски HTML показывать, а какие скрывать, содержится в однообъектной структуре.

Пример истории из ленты Facebook
Пример истории из ленты Facebook

Часто разработчики пытаются привести CSS в соответствие с этой логикой. Мы исходим из предположения, что весь код CSS для истории в ленте будет заключен внутри оберточного идентификатора, например #story. В итоге получается весьма раздутый код. Почему? Потому что правильная архитектура для слоя CSS должна быть намного более модульной. Попытка базировать архитектуру CSS на уровне PHP чем-то сродни попытке использовать схему базы данных для настройки сервера apache. Это просто не работает.

История из ленты, разбитая на более мелкие объекты
История из ленты, разбитая на более мелкие объекты

Таким образом, мы видим, что приведенный выше пример истории в ленте состоит из множества более мелких объектов. По мере того, как мы разбиваем крупные объекты на более мелкие, мы начинаем видеть, что одни и те же шаблоны появляются снова и снова, и одни и те же объекты становятся гораздо более пригодными для повторного использования. Мы начинаем видеть, что большинство сайтов состоят из одних и тех же базовых повторяющихся шаблонов, объединенных разными способами. В качестве побочного преимущества CSS становится намного меньше и проще.

Объект из нашего примера истории в ленте можно разбить на несколько HTML и CSS объектов:

1 заголовок

Заголовок

5 медиа блоков

Медиа блоки

2 стиля ссылок

Стили ссылок

1 список комментариев

Список комментариев

1 список действий

Список действий

1 абзац

Абзац

А какие преимущества у такого подхода?

Правильная модульность объектов CSS означает, что наш CSS (и, как следствие, наш HTML) становится намного проще и легче. Наш маленький объект многократного использования можно использовать по всему сайту для создания новых и непохожих страниц без добавления лишнего CSS кода.

В качестве отправной точки мы рекомендуем создавать следующие объекты: заголовки, списки, текстовые пояснения и ссылки, контейнеры, медиаобъекты, сетки и шаблоны. Прежде чем создавать целые страницы, сначала создавайте самые маленькие объекты, и ваш CSS по умолчанию останется маленьким.