Как я организую свой CSS для разработки веб-сайтов без фреймворка
За свой 20-летний опыт веб-разработки я разработал для себя стандартный подход к CSS, которым хочу поделиться в этой статье.
В следующем примере показан мой структурный подход, без дизайна. Так что статья не визуальный шаблон и не показывает дизайн.
В общем, я использую rem как единицу для всех размеров, кроме границ, которые я определяю в px. Моя система CSS состоит из следующих компонентов:- Сброс стилей
- Переменные
- Глобальные настройки проекта
- Конкретные настройки контента
- Эффекты наведения
- Медиа-запросы
Сброс стилей
Каждый браузер предоставляет предварительно отформатированный HTML, если вы не определяете стиль самостоятельно. Эта таблица стилей по умолчанию разработана по-разному в зависимости от производителя и версии браузера. Чтобы сбросить этот стиль для всех браузеров и унифицировать отображение, я использую первоначальный сброс.
organize-reset.css
Переменные
Современные браузеры поддерживают переменные, которые я определяю в root элементе.
Для всех спецификаций абсолютного размера ширины и размеров шрифта веб-сайта, с которым я работаю rem. Для упрощения вычислений я установил font-size в корне значение 10px, что соответствует 1rem в последующем определении. Таким образом, основной текст с размером шрифта 20 пикселей будет иметь 2rem в качестве определения.
Я определяю базовые цвета черный и белый в отдельном блоке. Непосредственно под этим все цвета проекта .
В разделе переменных макета я определяю все важные переменные макета, такие как content-width, content-padding, header-heightи т. д.
organize-variables.css
Глобальные настройки проекта
В глобальных настройках проекта я задаю базовые правила типографики и унифицирую интервалы.
Пример: с моей эстетической точки зрения расстояние вниз от и p, ul, figure элементов в области содержимого веб-сайта должно быть одинаковым.
В большинстве случаев моим сайтам не требуется более четырех размеров заголовков, чтобы упорядочить содержимое иерархически осмысленным образом. h4 также обычно промежуточный заголовок, в котором нет пробелов, но он выделен жирным шрифтом.
organize-globals.css
Конкретные настройки контента
Конкретный раздел моей системы CSS всегда самый подробный. Здесь я определяю конкретный дизайн контента, напрямую обращаясь к разделам. В каждом разделе я придерживаюсь иерархического порядка определений.
organize-specifics.css
Эффекты наведения
Я собираю все определения ховеров в центральное место и связываю их с медиа-запросом @media(hover:hover), потому что ховеры тоже нужны только устройствам с поддержкой ховеров.
Таким образом, я отслеживаю все ховеры и могу быстро найти и настроить их.
organize-hovers.css
Медиа-запросы
Я разрабатываю 90% приложений для настольных компьютеров и определяю все определения адаптивного дизайна в порядке убывания: рабочий стол → планшет → смартфон.
Привязав к корневому значению font-size, я могу грамотно масштабировать весь макет пропорционально.
organize-media-queries.css
Спасибо за чтение!
Я рад предложениям по оптимизации моей системы CSS.
Перевод статьи от Stephan Romhart