sass - 将值附加到 sass mixin 中的属性
问题描述
我有以下 sass mixin:
@mixin absoluteCenterVertical {
position: absolute;
top:50%;
transform: translateY(-50%);
}
我希望能够将额外的转换属性传递给我的 mixin,这样我就可以像使用它一样使用它
.element {
@include absoluteCenterVertical(rotate(45deg))
}
这将编译成
.element {
position: absolute;
top:50%;
transform: translateY(-50%) rotate(45deg);
}
如何做到这一点?
解决方案
您可以将参数与 mixins 一起使用。
@mixin absoluteCenterVertical($extraTransformVals:) {
transform: translateY(-50%) $extraTransformVals;
}
但是,上述内容需要始终传递一个参数,@include absoluteCenterVertical(rotate(90));
或者您可能传递的任何内容。如果不传递参数,sass 在编译时会报错。
如果你想有一个可选参数,这样 mixin 就可以在不传递参数的情况下工作@include absoluteCenterVertical;
,你必须使用语法提供一个默认值@mixin mixinName($argName: $defaultArgValue)
这是您可以做到的一种方法:
@mixin absoluteCenterVertical($extraTransformVals: noExtraValues) {
@if $extraTransformVals == noExtraValues {
transform: translateY(-50%);
} @else {
transform: translateY(-50%) $extraTransformVals;
}
}
推荐阅读
- c - 尝试访问 for 循环中的指针时出现分段错误
- javascript - react-hook中带有回调的多个调度?
- python-3.x - 如何从 Gtk.HeaderBar() 中删除图标边框
- java - Spring Boot 应用程序异常 java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.ObjectWriter.forType
- c++ - 为什么在源代码中 __find_if 的 __trip_cout 计算为 (__last-__first) >> 2
- java - 从 Excel (".xls") 文件中读取特殊字符时出错
- javascript - 我无法弄清楚如何将我的所有 html 内容分组在同一个包装器中
- php - 避免在替换字符串中找到替换占位符
- angular - 如何在Angular中捕获特定持续时间的开始时间和结束时间?
- swift - SwiftUI - 使用 UUID() 嵌入结构中的结构