如何使用 SASS 动态生成 CSS3 关键帧步骤?

Posted

技术标签:

【中文标题】如何使用 SASS 动态生成 CSS3 关键帧步骤?【英文标题】:How to dynamically generate CSS3 keyframe steps using SASS? 【发布时间】:2013-12-27 15:01:32 【问题描述】:

假设我有一个关键帧动画,它有 100 个步骤,每一步增加 top 1 像素。使用程序来生成这样的 css 是合乎逻辑的。

@keyframes animation

    0%   top:0px;
    1%  top:1px;
    2%  top:2px;
    ...
    99%  top:99px;
    100% top:100px;

虽然这可以在 JS 中轻松完成,但我想知道是否有办法在 SASS 中完成。

我现在遇到的主要问题是我找不到动态生成步骤选择器的方法(1%、2%、3% 等)。

我已经尝试过#string 语法,但是如果在百分比选择器中使用它会产生无效的语法错误,例如:

$num: 100;

@keyframes animation

    #num%   top:0px;


任何关于如何正确执行此操作的想法将不胜感激。

【问题讨论】:

好问题——但我认为这个例子很糟糕,因为线性动画不需要 100 个关键帧,0 % 和 100 % 就足以在这里实现相同的效果。 这非常适合动画径向渐变 【参考方案1】:

在将整个值打印为字符串之前生成百分比变量。 sass 处理百分比单位之间的数字运算,因此您可以使用 $i 变量

@keyframes manySteps 
  @for $i from 0 through 100 
    $percent: 0% + $i;
    #$percent  top: 1px; 
  

【讨论】:

以上是关于如何使用 SASS 动态生成 CSS3 关键帧步骤?的主要内容,如果未能解决你的问题,请参考以下文章

从 SASS 列表生成关键帧

使用 CSS3 动画和 Sass @for 循环触发列表

用于动画关键帧的 Sass Mixin,包括多个阶段和变换属性

如何使用 css3 动画更改背景位置?

css 多个关键帧变形如何衔接

scss Sass - Mixins:动画和关键帧