html - 使用 SASS 将类存储在扩展中
问题描述
让我们看看我们有 2 个盒子。我们想要一个宽度为 1px 的紫色边框,我们想要另一个宽度为 2px 的红色边框,但前提是它显示在平板电脑上。
SCSS:
.brd {
border-style: solid;
&-thin {
border-width: 1px;
&-purple {
border-color: purple;
}
&-red {
border-color: red;
}
}
&-thick {
border-width: 2px;
&-purple {
border-color: purple;
}
&-red {
border-color: red;
}
}
&-from-tablet {
@media only screen and (min-width: 768px) {
&-thin {
border-width: 1px;
&-purple {
border-color: purple;
}
&-red {
border-color: red;
}
}
&-thick {
border-width: 2px;
&-purple {
border-color: purple;
}
&-red {
border-color: red;
}
}
}
}
}
/*what I'd need*/
%colors {
&-purple {
border-color: purple;
}
&-red {
border-color: red;
}
}
%widths {
&-thin {
border-width: 1px;
@extend %colors;
}
&-thick {
border-width: 2px;
@extend %colors;
}
}
.brd {
border-style: solid;
@extend &widths;
&-from-tablet {
@media only screen and (min-width: 768px) {
@extend &widths;
}
}
}
HTML:
<div class="brd-thin-purple"></div>
<div class="brd-from-tablet-thick-red"></div>
但不幸的是,它不起作用。背后的想法是在类中构建查询以根据需要设置参数。
我想知道是否可以不仅将 css 键值对存储在“变量”中,还可以将类和类扩展甚至嵌套存储。
有任何想法吗?
解决方案
你不能用SASS placeholders做到这一点。他们太有限了。而是使用mixins:
@mixin brd-color {
&-purple {
color: purple;
}
&-red {
color: red;
}
}
然后像这样引用它:@include brd-color;
推荐阅读
- graphql - 使用 github API v4 graphQL 获取提交更改的文件和补丁
- docker - Heroku 和 Docker 使用 heroku.yml 部署:如何从“web”更改图像名称?
- biztalk - 如何从 BizTalk 2016 向微软消息队列发送小消息?
- java - 如何在android中像苹果形状一样定制形状进度条?
- sylius - 如何为新的自定义操作类型克隆添加 Flash 消息
- c++ - 从 windows 7 到 windows 10 的同步代码。现在有行尾错误
- deployment - java.lang.NoClassDefFoundError: org/omg/CORBA/TRANSIENT -- WildFly 17
- jenkins - 如何在参数化的 Jenkins 管道项目中检索作业名称
- vb.net - VB.NET LINQ Query 构建属性字符串
- javascript - 为什么我不能在类函数上使用扩展运算符?