【发布时间】:2020-11-20 20:42:33
【问题描述】:
我正在使用 mixin 来输出默认的转换时间函数、持续时间和可变数量的属性。
当前的 Mixin:
@mixin fast-transition($properties...) {
transition-duration: 0.1s;
transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
@if length($properties) > 1 {
transition-property: $properties;
} @else {
transition-property: all;
}
:global(.browser-ie) & {
transition: none;
}
}
当前使用情况:
@include fast-transition(background-color, color);
当前结果:
.el {
transition-duration: 0.1s;
transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
transition-property: background-color, color;
}
.browser-ie .el {
transition: none;
}
我希望能够指定transition: none 代码块的用法,可能通过@if 语句。
所需的 Mixin(不起作用)
@mixin fast-transition($properties..., $ieTransition) {
transition-duration: 0.1s;
transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
@if length($properties) > 1 {
transition-property: $properties;
} @else {
transition-property: all;
}
@if not ($ieTransition) {
:global(.browser-ie) & {
transition: none;
}
}
}
用法:(不起作用)
@include fast-transition((background-color, color), $ieTransition);
期望的输出:
.el {
transition-duration: 0.1s;
transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
transition-property: background-color, color;
}
工作版 - 来自云岑的回答
@mixin fast-transition($ie: false, $props: "all") {
transition-duration: 0.1s;
transition-timing-function: cubic-bezier(0.42, 0, 0.58, 1);
transition-property: #{$props};
@if not($ie) {
:global(.browser-ie) & {
transition: none;
}
}
}
@include fast-transition($props: "background-color, color", $ie: true);
【问题讨论】:
标签: css sass scss-mixins