使用Sass在媒体查询中扩展选择器
我有一个项目类和一个紧凑的“修饰符”类:
.item { ... }.item.compact { /* styles to make .item smaller */ }
这可以。但是,我想添加一个@media
查询,.item
以在屏幕足够小时强制类紧凑。
乍一想,这就是我试图做的事情:
.item { ... }.item.compact { ... }
@media (max-width: 600px) {
.item { @extend .item.compact; }
}
但这会产生以下错误:
您不能从@media内部扩展外部选择器。您只能在同一指令中使用@extend选择器。
我如何使用SASS来完成此任务而不必诉诸复制/粘贴样式?
回答:
简单的答案是:您不能这样做,因为Sass不能(或不会)为其构成选择器。您不能在媒体查询内部,也不能扩展媒体查询外部的内容。如果只复制它的一个副本而不是尝试组成选择器,那肯定会很好。但事实并非如此,您不能这样做。
使用混入
如果您要在媒体查询的内部和外部重用代码块,并且仍然希望它能够对其进行扩展,请编写一个mixin和一个extend类:
@mixin foo { // do stuff
}
%foo {
@include foo;
}
// usage
.foo {
@extend %foo;
}
@media (min-width: 30em) {
.bar {
@include foo;
}
}
从外部将选择器扩展到媒体查询中
这不会真正帮助您的用例,但这是另一种选择:
%foo { @media (min-width: 20em) {
color: red;
}
}
@media (min-width: 30em) {
%bar {
background: yellow;
}
}
// usage
.foo {
@extend %foo;
}
.bar {
@extend %bar;
}
等到Sass解除此限制(或自己修补)
关于此问题有许多正在进行的讨论(除非您添加了有意义的内容,否则请不要对这些线程作出贡献:维护者已经意识到用户希望使用此功能,这只是如何实现它以及如何使用它的问题。语法应该是)。
以上是 使用Sass在媒体查询中扩展选择器 的全部内容, 来源链接: utcz.com/qa/411895.html