【问题标题】:Sass mixins: having issues with translateX and translateYSass mixins:遇到 translateX 和 translateY 的问题
【发布时间】:2018-06-01 20:56:07
【问题描述】:

我创建了一个 mixin 来为不透明度和水平/垂直位置设置动画。我已经阅读了 SASS 网站上的文档。 mixin 当前为不透明度设置动画,但无法移动元素 -- translateX 和 translateY。

@mixin keyframes($animation-name, $axis, $start, $end) {
  @keyframes #{$animation-name} {
    0% {
      opacity: 0;
      transform: #{$axis}(#{$start});
    }

    50% {
      opacity: 1;
    }

    100% {
      opacity: 1;
      transform: #{$axis}(#{$end});
    }
  }
}

@include keyframes(slideLeft, translateX, 0, 200px);

.slide-left {
  animation: slideLeft 2s ease .1s forwards;
}

.redbox {
  opacity: 0;
  height: 100px;
  width: 100px;
  background: red;
}
<div class="redbox slide-left">
</div>

这里是支持 SCSS 的 JS fiddle 的链接:enter link description here

我一直在敲我的头,试图找出我做错了什么。任何帮助表示赞赏。

【问题讨论】:

    标签: css sass css-animations keyframe


    【解决方案1】:

    问题在于 Sass 是如何编译代码的。您需要使用文字字符串来定义转换值(translate 函数)。所以需要将属性的值创建为字符串,然后使用unquote函数输出值:

    @mixin keyframes($animation-name, $axis, $start, $end) {
        @keyframes #{$animation-name} {
            0% {
                opacity: 0;
                transform: unquote("#{$axis}(#{$start})");
            }
    
            50% {
                opacity: 1;
            }
    
            100% {
                opacity: 1;
                transform: unquote("#{$axis}(#{$end})");
            }
        }
    }
    

    演示here.

    希望对你有帮助。

    【讨论】:

    • 太棒了,感谢您的回答。从来不知道这可以做到。我在文档中找不到太多内容。你是怎么知道这件事的?
    • @JoelHoelting 我从未遇到过这样的案例。我刚刚编译了您的代码,发现带有转换的行甚至没有编译,所以我只是认为 Sass 会将所有 (#{$var}) 内容呈现为数学运算而不是字符串。所以,让我们测试一下,用粗线的方式来做,瞧! :-)
    猜你喜欢
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 2015-06-21
    • 2017-07-22
    • 2015-08-25
    • 1970-01-01
    相关资源
    最近更新 更多