【问题标题】:Pass variable from SASS mixin to CSS Value将变量从 SASS mixin 传递给 CSS 值
【发布时间】:2021-10-01 09:24:04
【问题描述】:

我们如何将变量 $name 的值传递给 CSS 值。

我们的 $name 变量 = "rotateX" 但是 transform: $name( 360deg ); 似乎没有输出 transform: rotateX( 360deg );

即使我们使用插值:

这个 SCSS

@mixin rotate( $name ) {
  animation-name: $name;
  animation-duration: 5s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  
  @keyframes #{ $name } {
    100% {
      transform: #{ $name } ( 360deg );
    }
  }
}

.rotate-x {
  @include rotate( $name: rotateX );
}

输出这个 CSS:

.rotate-x {
  animation-name: rotateX;
  animation-duration: 5s;
  animation-timing-function: linear;
  animation-iteration-count: infinite; }
@keyframes rotateX {
  100% {
    transform: rotateX 360deg; } }

由于某种原因,括号中的 360deg 值会破坏整个 CSS 规则。

我们如何正确添加transform: rotateX( 360deg ),其中rotateX是一个变量? H2>

【问题讨论】:

    标签: css sass css-transforms string-interpolation scss-mixins


    【解决方案1】:

    这可能不是最好的解决方案。但它会解决你的问题。 试试下面的代码。

    @mixin rotate( $name ) {
      animation-name: $name;
      animation-duration: 5s;
      animation-timing-function: linear;
      animation-iteration-count: infinite;
      
      @keyframes #{ $name } {
        100% {
          transform: #{ $name }#{"("}360deg#{")"};
        }
      }
    }
    
    .rotate-x {
      @include rotate( $name: rotateX );
    }
    

    【讨论】:

    • 是的。哇,它有效,但如何?引号有什么作用?
    • 在 sass/scss 中,当您完全编写变量和括号时,它认为这是一个算术运算,因此会忽略它。这就是我的理解,但可能是一个不同的问题。无论如何,如果我的回答解决了您的问题,您是否可以通过单击 tick mark 将其作为您问题的最终答案?
    猜你喜欢
    • 2020-06-13
    • 2017-10-31
    • 2021-06-11
    • 2014-05-05
    • 2018-12-30
    • 1970-01-01
    • 2016-01-26
    • 2013-05-15
    相关资源
    最近更新 更多