为什么这个嵌套的 mixin 会重复它的父选择器?
Why does this nested mixin repeat its parent selector?
当嵌套在 class 规则中时,为什么 mixin 评估包含父 class(.btn 舍入)?
bootstrap/scss/mixins:
@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
$max: breakpoint-max($name, $breakpoints);
@if $max {
@media (max-width: $max) {
@content;
}
} @else {
@content;
}
}
styles.scss:
.btn-rounded {
@include media-breakpoint-down(sm){
display: none;
}
position: relative;
background-color: white;
}
styles.css:
.btn-rounded {
position: relative;
background-color: white;
}
@media (max-width: 575.98px) {
.btn-rounded {
display: none;
}
}
像 @media (max-width: 575.98px)
这样的媒体查询必须是 css 中的顶级。因此,要使编译后的 css 正常工作,它需要取消嵌套并出现在顶层。
SASS 自动为您完成。
为了使规则以正确的元素为目标 - 即使它没有嵌套 - 它需要重复选择器 (.btn-rounded
)。
您可以在 documentation.
中了解有关媒体查询的更多信息
我还发现这个 article 对于如何在 sass 中解决这个问题非常有用。
当嵌套在 class 规则中时,为什么 mixin 评估包含父 class(.btn 舍入)?
bootstrap/scss/mixins:
@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {
$max: breakpoint-max($name, $breakpoints);
@if $max {
@media (max-width: $max) {
@content;
}
} @else {
@content;
}
}
styles.scss:
.btn-rounded {
@include media-breakpoint-down(sm){
display: none;
}
position: relative;
background-color: white;
}
styles.css:
.btn-rounded {
position: relative;
background-color: white;
}
@media (max-width: 575.98px) {
.btn-rounded {
display: none;
}
}
像 @media (max-width: 575.98px)
这样的媒体查询必须是 css 中的顶级。因此,要使编译后的 css 正常工作,它需要取消嵌套并出现在顶层。
SASS 自动为您完成。
为了使规则以正确的元素为目标 - 即使它没有嵌套 - 它需要重复选择器 (.btn-rounded
)。
您可以在 documentation.
中了解有关媒体查询的更多信息我还发现这个 article 对于如何在 sass 中解决这个问题非常有用。