【发布时间】:2020-01-06 19:03:23
【问题描述】:
当用户向下滚动网站时,我创建了单个元素 (.boxes > div) 的淡入效果。我用 Javascript 检查元素是否刚刚滚动到视图中,然后添加类 .fadeInUp 以添加动画效果。
这就是我如何使用animation-delay 在另一个元素之后淡入另一个元素:
.fadeInUp {
& + .fadeInUp {
animation-delay: 300ms;
& + .fadeInUp {
animation-delay: 600ms;
& + .fadeInUp {
animation-delay: 900ms;
& + .fadeInUp {
animation-delay: 1200ms;
& + .fadeInUp {
animation-delay: 1500ms;
}
}
}
}
}
opacity: 0;
animation: fadeInUp 1000ms forwards;
}
但是,我想缩短我的 SCSS 代码以选择具有相同类名的下一个兄弟类,因为如果我将框添加到 HTML 部分,我也需要将animation-delay 添加到 SCSS 部分。
问题:
是否有一个选项可以在不知道会有多少框的情况下使用原生 CSS(或 SCSS)来缩短这种行为?像
& + * { ... }
但特定于 .fadeInUp 类,并且每个下一个兄弟类将 animation-delay 值增加 300 毫秒?
我创建了这支笔来演示我的问题并使其更清楚:
【问题讨论】:
-
我认为将来这可能是您正在寻找的解决方案:stackoverflow.com/questions/43539203/use-css-counter-in-calc。现在,我会在你的循环中添加一个简单的
e.style.animationDelay=i*300+"ms";并让 javascript 来做这些脏活 ;-) -
感谢这个有用的链接和你的 js 建议! @ReSedano我也想到了,但首先想知道是否有CSS的可能性。如果您发布它,将接受您的评论作为答案。 :)
-
好的。非常感谢!我添加了另一种观点来解决您的问题:-)
标签: javascript html css sass