CSS min()函数到SASS

h9vpoimq  于 2022-11-27  发布在  其他
关注(0)|答案(4)|浏览(193)

我有如下CSS函数:

width: min(calc(100vw - 51rem), calc(100vh - 2rem));

它在使用CSS文件时可以正常工作,但在SASS中就不行了。我该如何为SASS重写这个函数呢?

tag5nh1u

tag5nh1u1#

当使用SASS时,min()是SASS本身内的函数,因此您的语句在处理时不会进入CSS。有一个快速的解决方法,因为SASS区分大小写,而CSS不区分。只需将Min()中的“M”大写。Min()语句不会被识别为内部SASS min()函数,但可以在CSS中工作。

width: Min(calc(100vw - 51rem), calc(100vh - 2rem));
093gszye

093gszye2#

你可以把min Package 在一个calc中,它的工作原理是:

width: calc(min(calc(100vw - 51rem), calc(100vh - 2rem)));

在您的情况下,您甚至可以简化代码:

width: calc(min(100vw - 51rem, 100vh - 2rem));
vfh0ocws

vfh0ocws3#

您可以使用这些Sass函数来强制CSS函数。

@function css-function( $function, $values... ) {
    @return 
        $function
        + unquote( '(' )
        + $values
        + unquote( ')' )
    ;
}

@function css-min( $values... ) {
    @return css-function( min, $values );
}

@function css-max( $values... ) {
    @return css-function( max, $values );
}

@function css-clamp( $values... ) {
    @return css-function( clamp, $values );
}

在组合使用Sass变量和CSS变量时,可能仍需要使用#{ }插值。
用法:

$width-first: 40px;
$width-second: 30px;

.my-selector {
    width: css-min(#{$width-first}, #{$width-second});
}

编制日期:

.my-selector {
    width: min(40px, 30px);
}
gcxthw6b

gcxthw6b4#

在Webpack Bundler中将node-sass替换为sass(dart-sass),此问题将消失。

相关问题