将复杂的 Sass mixin 转换为 Stylus

Converting complex Sass mixin to Stylus

我正在 SCSS 中转换这个 mixin,working example here

@mixin fluid-type($properties, $min-vw, $max-vw, $min-value, $max-value) {
    & {
        @each $property in $properties {
            #{$property}: $min-value;
        }

        @media screen and (min-width: $min-vw) {
            @each $property in $properties {
                #{$property}: calc(#{$min-value} + #{strip-unit($max-value - $min-value)} * ((100vw - #{$min-vw}) / #{strip-unit($max-vw - $min-vw)}));
            }
        }

        @media screen and (min-width: $max-vw) {
            @each $property in $properties {
                #{$property}: $max-value;
            }
        }
    }
}

到手写笔in this codepen

我在进行转换时发现了一些问题:

原创此代码的文章是 Smashing Mag 中的真正流畅的排版与 vh 和 vw 单位

手写笔中的代码或多或少是这样的:

   fluid-type($properties, $min-vw, $max-vw, $min-value, $max-value)
      &
        for $property in $properties
          {$property}: $min-value
        @media screen and (min-width: $min-vw)
          for $property in $properties
            {$property}: "calc(%s + %s * ((100vw - %s) / %s))" %($min-value strip-unit($max-value - $min-value) $min-vw strip-unit($max-vw - $min-vw))
        @media screen and (min-width: $max-vw)
          for $property in $properties
            {$property}: $max-value

然后,要提取值的数量,您可以使用 unit() 函数:

strip-unit($value)
    unit($value, '')

生成的css代码与SCSS示例相同,参见codepen: https://codepen.io/blonfu/pen/LNwyJZ