Вы думаете об этом правильно, хотя, вероятно, вам все еще нужно будет понимать различные реализации CSS в браузерах. Это просто понимание среды, в которой живет ваше приложение.
Чтобы уточнить: это не о понимании CSS. Если вы хорошо знаете язык, вам все равно придется справляться с избыточностью, дублированием и отсутствием структур управления в языке.
Я пишу CSS более 10 лет, и я пришел к выводу, что, хотя язык мощный и эффективный, реализация CSS отстой. Поэтому я использую слой абстракции, такой как Sass или Less или xCSS для взаимодействия с языком. Эти инструменты используют синтаксис, похожий на CSS, поэтому вы решаете проблему в области проблемы. Использование чего-то вроде PHP для написания CSS работает, но это не лучший подход.
Скрывая проблемы в языке через уровень абстракции, вы можете предоставить более качественный продукт, который будет поддерживать его целостность на протяжении всего жизненного цикла вашего проекта. Написание CSS от руки ускоряет программное гниение , если вы не предоставляете надежную документацию, которой нет у большинства CSS-кодеров. Если вы пишете хорошо документированный CSS-фреймворк, вы, вероятно, не написали бы его вручную. Это просто не эффективно.
Другая проблема с CSS связана с отсутствием поддержки объявлений вложенных блоков. Это побуждает кодеров создавать плоский глобальный набор классов и обрабатывать конфликты имен с помощью соглашения об именах. Мы все знаем, что глобалы - это зло, но почему мы пишем CSS таким образом? Не лучше ли дать вашим классам контекст вместо того, чтобы раскрывать их всей модели документа? И ваше соглашение об именах может работать, но это просто еще одна задача, которую вы должны освоить, чтобы написать язык.
Я призываю тех из вас, кто гордится написанием хорошего CSS, начать применять некоторые из лучших практик от программирования до вашей разметки. Использование слоя абстракции не означает, что вам не хватает навыков для написания хорошего CSS, это означает, что вы ограничили свои слабые стороны языка.