sass - 在 SCSS 中使用函数和 if 语句
问题描述
我正在尝试为 scss 键和值创建 if 语句。
例如:
$directionLang: rtl;
@function rightOrLeft($directionLang) {
@if $directionLang == rtl {
@return 'left: 10px';
}
@else {
@return 'margin-left: 230px';
}
}
.arrow-icon {
#{rightOrLeft($directionLang)};
}
问题出在 .arrow-icon 内部。
我收到一个错误:
错误:属性“#{rightOrLeft($directionLang)}”必须后跟一个“:”。
有什么建议么?
谢谢!!
解决方案
在这种情况下,您应该使用 SASS/SCSS@mixin
而不是@function
.
@function
在 SASS/SCSS 中应该用于提供/计算值,例如.arrow-icon { margin-left: functionName(args); }
@mixin
当您想要获得完全不同的 css 规则时,它更强大,但也适合您的情况。带有您的代码的示例片段:
HTML
<span class="arrow-icon">←</span>
SCSS
$directionLang: rtl; //$directionLang: ltr; //uncomment for test @mixin rightOrLeft($directionLang) { @if $directionLang == "rtl" { left: 10px; } @else { margin-left: 230px; } } .arrow-icon { @include rightOrLeft($directionLang); }
推荐阅读
- elasticsearch - 使用 min_doc_count=0 的弹性搜索聚合返回所有与查询结果或命中无关的存储桶
- html - 如何制作背景尺寸:从左侧切割封面?
- angular - 应用程序启动时出现 AWS Amplify API 导出错误
- git - Git 合并冲突 - 分离的 HEAD 主控
- docker - Docker Windows 10 Home:在第 2 行第 18 列的上下文中不允许映射值(Psych::SyntaxError)
- r - R - 为基于阈值组合的所有组合创建向量列表
- c++ - 如何访问存储在 std::variant 中的类的方法
- microsoft-graph-api - 我们是否有任何 Microsoft 图形 API 来检查租户 ID 是用于公共云还是国家云?
- matlab - MATLAB中某些数字的所有可能组合的矩阵:如何在维度上通用
- amazon-web-services - AWS API 与 Mulesoft 的集成