【发布时间】:2021-12-12 14:16:09
【问题描述】:
我正在开发用于断点的 mixin,但我遇到了以下问题。 当设置了特定状态(最大宽度模式)时,应通过提取一个 em 值(1px/16(默认字体大小))重新计算断点。
这是我代码的重要部分(我可能会去掉这个函数,基本上这可以内联完成):
$mediaBreakpoint: map-get( $breakpoints, $breakpoint );
// if the mode is for max-width then subtract 1px.
@if map-get( $modes, $mode ) == 'max-width' {
$mediaBreakpoint: calculateMaxWidth(#{$mediaBreakpoint})
}
@debug $mediaBreakpoint;
/**
* calculate the max width based on input
*/
@function calculateMaxWidth($breakpoint){
$newBreakpoint: calc( #{$breakpoint} - 0.0625em ); // 1px in em sizing.
@return $newBreakpoint;
}
但无论我尝试什么,@debug 值都显示为: 48em-0.0625em // 这是无效的,我需要实际结果(在本例中为 47.9375)。 64em // 有效的最小宽度
这是编译好的css:
@media screen and (max-width: calc( 48em - 0.0625 )) {
}
我错过了什么?
【问题讨论】:
-
为什么在调用自己的函数时要对参数使用字符串插值?这里:
$mediaBreakpoint: calculateMaxWidth(#{$mediaBreakpoint})。这没有必要。
标签: sass scss-mixins