Ноль-D
Все начинают использовать CSS с одним файлом, который содержит все стили.
-
style.css
1D
Вскоре он становится громоздким, и каждый решает объединить CSS в несколько файлов по элементам страницы:
-
html_elements.css
-
header.css
-
main-area.css
-
footer.css
Некоторым может показаться, что это не удобно и групповые стили по функциям:
-
typography.css
-
layout.css
-
sticky-footer.css
(содержит объявления для многих элементов, а не только для нижнего колонтитула)
2D
Если в проекте много CSS, для его одновременного использования может потребоваться использование обеих групп. Структура файлов CSS становится двумерной:
layout/
-
grid-system.css
-
header.css
-
sidebars.css
look/
-
typography/
-
main.css
-
headers.css
-
lists.css
-
-
backgrounds/
-
html_elements.css
-
header.css
-
main-area.css
-
footer.css
-
Хорошо, пример сфабрикован, но вы точно понимаете, что я имею в виду.
До этого момента все нормально.
Введите медиа-запрос
Здесь моя структура CSS получает funked вверх.
В дополнение к двумерной структуре, описанной выше, я должен структурировать свой код по запросам медиа:
- Некоторые из моих стилей универсальны (применяются повсюду)
- Некоторые применяются только к определенному размеру экрана:
- мал;
- средний;
- большое;
- очень большой.
- Некоторые из них применяются к определенным группам экранов:
- все, кроме небольших (немобильные стили);
- малый и средний (где боковые панели не находятся сбоку)
- large и xlarge (где у вас есть боковые панели)
Я попытался преодолеть эту проблему, рассеяв медиа-запросы стилей среди существующих файлов CSS. breakpoint Расширение Compass помогает много, но таблицы стилей становятся слишком грязными. Поиск определенного стиля, когда он не изображается в файловых структурах, вызывает большую боль.
Я пробовал группировать по медиа-запросам, затем по элементам и функциям. Но структура файлов двухмерна, поэтому вы не можете добавить новое измерение, вы можете добавить еще один уровень иерархии. Итак, это не изящно. Кроме того, он очень громоздкий.
Итак, я получаю 2D-структуру с медиа-запросами на одной оси и уродливое сочетание элементов и функций на другой оси.
Я абсолютно не удовлетворен этим, но я просто не придумал изящное решение. Пожалуйста, предложите один.