Я надеюсь, что существует какая-то структура CSS / стиля, которая работает со строго семантической разметкой и приводит к относительно небольшим файлам. Как я вижу сейчас, это еще один пример железного треугольника «три варианта, выберите два».
Вот что я имею в виду. Я ищу:
Какой-то фреймворк визуального стиля (чтобы мне не приходилось писать все вручную)
... который работает с простым семантическим HTML без какого-либо загрязнения имен классов только ради визуального стиля. Это мое тупое, упрямое мнение, но я считаю, что разметка всегда должна быть разреженной, простой и семантической. Такие вещи:
<div class = "widget">
... а не это:
<div class = "widget d-flex p-2 bd-highlight">
... что приводит к относительно небольшому размеру файла (-ов). Сами по себе фреймворки на самом деле довольно скудные. Но чтобы оставаться легкими, им требуется декларативная разметка. Препроцессоры, такие как Sass, действительно очень легко позволяют выполнять наследовать наборы правил прямо из фреймворков. Итак, вы можете сделать это:
.widget {
@extend .d-flex;
@extend .p-2;
@extend .bd-highlight;
}
Но это очень быстро приводит к размеру файла абсолютно колоссальный. Наборы правил остаются крошечными, но списки селекторов взрываются. Я бы категорически отверг это решение только из-за проблемы с размером файла.
Моя интуиция подсказывает мне, что у меня есть варианты: либо продолжить писать CSS вручную (отбрасывая №1), либо начать объявлять стили в моем html (отбрасывая №2).
Кто-нибудь знает выход из этого? Я неправильно использую Sass? Есть ли другой тип фреймворка, о котором я не знаю? Я работаю с Sass и React, но я готов учиться чему угодно.






Немного покопавшись в этой проблеме, я думаю, что в настоящее время нет разумного способа использовать структуру CSS с семантической разметкой без серьезных штрафов. Я решил использовать собственный CSS для окончательной сборки. Некоторые общие примечания:
Некоторые фреймворки (особенно Bootstrap) предоставляют возможность стилизации с помощью миксинов (@include framework-mixin()). Это приводит к дублированию наборов правил (и, следовательно, к некоторому раздуванию), но это намного легче, чем то, что происходит, когда вы используете @extend для наследования. Однако многие базовые классы просто отображаются как обычные классы. Это означает, что вы по-прежнему сталкиваетесь с вопросом семантической разметки или массового раздувания файлов.
Кажется, что большинство современных фреймворков организуют свою кодовую базу в наследуемые блоки. Если вы очень внимательно относитесь к @extend только с теми классами, которые вам нужны, вы можете получить (возможно) приемлемые размеры файлов для окончательного HTML. Вместо того, чтобы включать весь файл css фреймворка, рассмотрите возможность включения только необходимых файлов компонентов. Я все же обнаружил, что даже эти файлы могут очень легко стать слишком большими, но если вы будете осторожны, это может сработать.
Трудно понять, что вы ищете, но использование расширения в sass может вызвать большие наборы правил. Конечно, можно писать небольшие файлы с помощью sass. Короткий рад на расширении: sitepoint.com/sass-extend-nobody-told-you