Это проблема, вызванная упорным отказом W3C добавлять переменные в CSS.Они утверждают, что каскадные стили представляют собой совершенно приемлемую альтернативу, чего во многих случаях явно нет, и что CSS должен быть достаточно простым, чтобы непрофессионал мог подобрать его без обучения программированию - даже если на этом этапе вам действительно нужнобыть специально обученным справляться с его быстро растущей сложностью.
Метод # 1
Проблема с первым методом состоит в том, что, поскольку эстетический дизайн не всегда логически структурирован, он делает невозможнымлогически организовать ваши стили и все еще использовать этот метод.
Например, я обычно организую свои стили по группам и макетам пользовательского интерфейса, а также по широким разделам сайта.Может существовать глобальная таблица стилей для всего сайта (или, по крайней мере, для внешнего интерфейса), а затем может быть таблица стилей для определенного макета страницы или типа пользовательского интерфейса.И в каждой таблице стилей есть разные разделы для различных элементов пользовательского интерфейса / макета.
Проблема в том, что стили не группируются таким образом в дизайне сайта.Скорее всего, ваше навигационное меню поделится цветом с полем для комментариев;и ваше боковое меню, вероятно, будет иметь ширину с вашим виджетом поиска;и у вас, вероятно, есть несколько разных классов элементов пользовательского интерфейса из разных разделов сайта, использующих разные макеты, но которые имеют общие атрибуты.Организовать ваши стили по их визуальному сходству было бы хаосом, не говоря уже о невозможности, поскольку некоторые элементы могут иметь 5 разных свойств с 5 другими элементами.
Метод # 2
Так что это приносит много разработчиковко второму варианту.Но поскольку эстетика сайта редко соотносится с семантикой, они заканчивают тем, что используют имена классов, такие как blue
, red3
или primary-color
, secondary-color
, или width-1col
и width-3col
и т. Д. Но это в равной степени плоховариант, так как он полностью нарушает разделение контента и представления.Возможно, в вашем текущем дизайне окно поиска, меню категорий и опросы сообщества отображаются в правом столбце и имеют одинаковую ширину, но это не всегда так.Поэтому, если вы измените дизайн сайта, вам придется изменить ваш HTML в дополнение к вашему CSS.
Так в чем же решение?
Большинство разработчиков используют комбинацию 3. Они используют опцию1, когда эстетическая организация совпадает с организацией сайта / пользовательского интерфейса.Они используют вариант 2, когда эстетическая структура совпадает с семантической структурой.И они прибегают к варианту 3 при сбое 1 и 2.
Но там - это лучший способ ... исправить источник проблемы: реализация CSS.Опыт реального мира научил многих дизайнеров и разработчиков тому, что CSS-дизайн не работает в реальной жизни так, как задумал рабочая группа CSS.Для реализации сложных и сложных проектов при написании поддерживаемого кода CSS должен иметь наследование селектора, переменные и миксины.
Проекты типа Sass и LESS применяют сложные урокии знания, извлеченные из десятилетий разработки программного обеспечения для CSS.Современные языки программирования не имеют сложных синтаксисов, чтобы просто подпитывать эго программистов.Языки программирования развивались вместе с дисциплиной разработки программного обеспечения, поскольку программисты обнаружили, что для написания поддерживаемого / управляемого кода необходимы определенные функции и конструкции.
Это дает разработчикам инструменты, необходимые для написания эффективных, управляемых CSS и HTML безизменение спецификации CSS.Вы просто пишете, используя SCSS или эквивалентные метаязыки, а затем позволяете Sass преобразовать его в CSS для вас.Некоторые люди даже связывают его с Haml , но я не нашел необходимости заходить так далеко.