Что в SCSS означает символ %?

Что означает % в scss?

Использование % в контексте: (источник: https://codepen.io/FWeinb/pen/GrpqB?editors=1100)

@import "compass/css3";

.box{
  margin: 5em auto;
  position: relative;
  width: 10em;
  height: 10em;
  line-height: 10em;
  overflow: hidden;
}

%box__dir{
  position: absolute;
  width: inherit;
  height: inherit;          
  text-align: center;
  line-height: inherit;
  transition:transform .4s ease;
}

Что означает знак процента перед «box_dir»?


person xing Zì    schedule 16.03.2019    source источник
comment
Ну, SCSS и SASS явно разные. Человек, не знакомый с SASS, будет искать вопрос о SCSS, а не о SASS. Что еще сказать; это не дубликат.   -  person xing Zì    schedule 16.03.2019
comment
stackoverflow.com/questions/5654447 /   -  person Temani Afif    schedule 16.03.2019
comment
@TemaniAfif Для человека, который не разбирается в SASS, этот вопрос очень поможет ему. Он может увидеть вопрос, который вы пометили как дубликат, и подумать, что это ему не поможет, потому что речь идет о SASS — помните, он не знает, что SASS и SCSS во многом одно и то же. (Не так давно я был в такой ситуации)   -  person xing Zì    schedule 16.03.2019
comment
Я все еще не вижу проблемы пометки как дубликата. Закрытие вопроса не означает его удаление. Человек все равно может найти ваш вопрос и приведенный ниже ответ, и он тоже поймет, что SASS — это то же самое, что и SCSS. Комментарии, которые мы также пишем сейчас, заставят любого, кто найдет этот вопрос, лучше понять, что оба они одинаковы.   -  person Temani Afif    schedule 16.03.2019


Ответы (1)


В SCSS % указывает на селектор-заполнитель.

[Заполнители] очень похожи на селекторы классов, но вместо точки (.) в начале используется символ процента (%). У селекторов-заполнителей есть дополнительное свойство: они не будут отображаться в сгенерированном CSS, в вывод будут включены только те селекторы, которые их расширяют.

Поэтому, если вы где-то включили это в свой SCSS, но никогда не использовали (расширяли) его, оно не появится в сгенерированном вами CSS.

%box__dir {
 position:absolute;
 width:inherit;
 height:inherit;
 text-align:center;
 line-height:inherit;
 transition:transform .4s ease;
}

Как только вы используете placeholder, он появится в вашем сгенерированном CSS, как и ожидалось.

.something {
  color: red;
  @extend %box__dir;
}

Создано CSS:

.something {
  color: red;
  position:absolute;
  width:inherit;
  height:inherit;
  text-align:center;
  line-height:inherit;
  transition:transform .4s ease;
}
person Andy Hoffman    schedule 16.03.2019
comment
@extend $box__dir — символ доллара указывает на то, что это переменная, верно? - person xing Zì; 16.03.2019
comment
@sebastiannielsen Это была опечатка. Фиксированный. Ссылка, которую я включил в свой ответ, содержит несколько реальных примеров, которые должны помочь вам за рамками ответа. - person Andy Hoffman; 16.03.2019
comment
В чем разница между миксинами и % ? Если миксин не используется ни в одном классе, он также не генерируется, верно? - person Aleks Grunwald; 11.06.2021
comment
@AleksGrunwald Хорошее объяснение здесь с практическими примерами ближе к концу статья. - person Andy Hoffman; 11.06.2021