gpt4 book ai didi

css - SCSS 过渡属性覆盖

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:50 25 4
gpt4 key购买 nike

我使用@mixin 为元素添加不同的过渡属性。假设我的 .scss 中有这个:

@mixin transition($prop, $sec){
-webkit-transition: $prop $sec;
-moz-transition: $prop $sec;
-ms-transition: $prop $sec;
-o-transition: $prop $sec;
transition: $prop $sec;
}

然后我调用:

.sample{
@include transition(background-color, 0.2s);
@include transition(margin, 0.3s)
}

.sample 只有边距过渡,但我还想要背景颜色过渡:有没有简单的方法让它工作?

重要的是我有不同的电话

最佳答案

SASS 无法连接属性,我不知道是否存在 CSS 外部工具来完成此任务。 Sass 的创建是为了提高 CSS 功能,而不是让程序员养成不良的编程习惯。当您可以将它们全部保存在一个语句中时,我真的不知道创建多个 CSS 声明语句的目的。将所有转换保存在一个语句中可以显着改善您的结构、工作流程和 Sass 代码的性能。

好吧,就是说了,正如您之前提到的“让可怕的事情发生吧”。

这里有两种不同的 mixin,一种用于简写转换声明,另一种用于长形式,它们在处理甚至加载时间上的差异可以忽略不计,唯一明显的区别在于代码的风格。

长格式混合

@mixin transition($properties, $durations, $timing-function: null, $delay: null) {
$declarations: (property, $properties),
(duration, $durations),
(timing-function, $timing-function),
(delay, $delay);

@each $declaration in $declarations {
@if nth($declaration, 2) {
$output: ();
@each $val in nth($declaration, 2) {
$output: append($output, $val, comma);
}
@each $prefix in '-webkit-', '-moz-', '-ms-', '-o-', '' {
#{$prefix}transition-#{nth($declaration, 1)}: $output;
}
}
}
}

它类似于@LeBen mixin,但您可以使用 include 和不带引号的逗号分隔参数:

@include transition(background-color margin, 0.2s 0.3s);

简写形式

@mixin transition($declarations...) {
@each $prefix in '-webkit-', '-moz-', '-ms-', '-o-', '' {
#{$prefix}transition: $declarations;
}
}

这是在您的代码中实现它的方法

@include transition(background-color 0.2s, margin 0.3s);

现在,要解决“不同调用”的问题,我认为处理它们的唯一方法是使用 append()列表功能。

让我们来看例子。我将使用速记混合形式,因为它更容易实现。

假设您有四个页面,三个部分(_variables.scss_page1.scss_page2.scss_page3 .scss) 和一个导入另一个的 style.scss 文件:

_VARIABLES.SCSS

// Here comes the variable declaration
$transition-list: color 1s;

_PAGE1.SCSS

// Using append($list, $val, $separator:auto) list function
// we can add some items to $transition-list
$transition-list: append($transition-list, margin 2s, comma);

_PAGE2.SCSS

// You can add also the output of a function
@function example(){
@return unquote("background-color 1s")
}

$transition-list: append($transition-list, example(), comma);

STYLE.SCSS

// You can add new values into the same page
$transition-list: append($transition-list, padding 4s, comma);

$transition-list: append($transition-list, border 10s, comma);

// And finally you only need to use the include to generate the final transition
example {
@include transition($transition-list);
}

正如我之前所说,我不推荐使用这种方法,这不是一个好的做法。

关于css - SCSS 过渡属性覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23202250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com