Я пытаюсь выполнить следующий вывод CSS с Sass:Sass @extend родственный селектор ссылок родительского селектор (амперсанд)
.selector1 + .selector1, .selector2 + .selector2 {
margin-top: -80px;
}
Функциональность @extend должна сделать работу:
%sibling-selector {
& + & {
margin-top: -80px;
}
}
.selector1 {
@extend %sibling-selector;
}
.selector2 {
@extend %sibling-selector;
}
Но, похоже, функция расширения имеет проблемы с двумя родительскими ссылками (&) в расширении только определения класса (% sibling-selector). Это выход:
.selector1 + .selector1, .selector2 + .selector1,
.selector1 + .selector2, .selector2 + .selector2 {
margin-top: -80px;
}
Так функция @extend делает одноуровневые селекторы для каждой комбинации селекторов, которые используют определение @extend.
Хотя я ожидаю, что @extend останется в «области» текущего селектора, и поэтому амперсанд будет заменен на текущий селектор. Это ошибка или функция? :-)
Я знаю, что я мог бы использовать подмешать для этой работы,
@mixin sibling-selector {
& + & {
margin-top: -80px;
}
}
.selector1 {
@include sibling-selector;
}
.selector2 {
@include sibling-selector;
}
но что бы создать дублирующие определения CSS:
.selector1 + .selector1 {
margin-top: -80px;
}
.selector2 + .selector2 {
margin-top: -80px;
}
Есть ли способ, чтобы получить это право с Sass ?
Это кажется ошибка для меня - как краевого случае, который на самом деле не приходится. Возможно, вы захотите записать проблему с проектом в GitHub. Тем временем: (1) подход '@ mixin', иначе (2) просто запрограммируйте нужный результат как ванильный CSS и назовите его днем. – founddrama
Возможно, вам следует подать отчет об ошибке. https://github.com/nex3/sass/issues –
Добавлена новая проблема в github: https://github.com/nex3/sass/issues/848 – Huyby