Вы должны найти компромисс между удобством сопровождения (вложение упрощает поиск в таблице стилей) и производительностью рендеринга.
Практическое правило гласит, что вы должны попытаться ограничить себя тремяВложение уровня, и вы должны избегать вложения идентификаторов, если в этом нет необходимости.
Тем не менее, я думаю, что слишком большое вложение - не самая большая проблема.Как только я осознал силу миксинов, я стал их использовать.
Например, это моя часто используемая кнопка mixin:
@mixin small-button($active-color: $active-color, $hover-color: $button-hover-color, $shadow: true)
display: inline-block
padding: 4px 10px
margin:
right: 10px
bottom: 10px
border: none
background-color: $button-color
color: $font-color-inv
+sans-serif-font(9px, 700)
text-align: center
text-transform: uppercase
cursor: pointer
@if $shadow
+light-shadow
&:hover
text-decoration: none
background-color: $hover-color
&:last-child
margin-right: 0
a
color: $font-color-inv
&, &:hover
text-decoration: none
&.disabled
+opacity(0.75)
&:hover
background-color: $button-color
&.active
background-color: $active-color
&.disabled:hover
background-color: $active-color
Видите, довольно немного кода.Применение таких миксинов ко многим элементам на вашей странице приведет к большому файлу CSS, который будет интерпретироваться дольше.
В старом стиле CSS вы бы указывали каждый элемент кнопки, например, класс .small-button.Но этот метод загрязняет вашу разметку несемантическими классами.
Sass предлагает решение, хотя: наследование селектора через директиву @ extend .
Если вы установили значения по умолчанию для вашего параметраВ качестве миксина вы можете также предоставить простой класс, который использует миксины с вашим значением по умолчанию:
// Use this mixin via @extend if you are fine with the parameter defaults
.small-button
+small-button
И затем вы можете просто наследовать от этого класса в различных контекстах:
#admin-interface
input[type=submit]
@extend .small-button
Результирующий оператор CSS объединяет все случаи использования кнопки .small в одно правило с разделителями-запятыми:
.small-button, #admin-interface input[type=submit] {
display: inline-block;
...
}
В заключение, наивное использование Sass может повлиять на производительность CSS.Однако при грамотном использовании он поддерживается благодаря хорошо структурированному и DRY-коду, обеспечивает правильное разделение разметки и стиля (только для семантических классов) и позволяет использовать умный и производительный код CSS.