使用nth-child作为CSS变量

时间:2017-08-04 13:28:39

标签: css animation css-selectors

是否有某种方式(没有javascript)让nth-child影响CSS?

例如,当我加载10张图像时,我会淡化不透明度,并为每张图像提供N秒的动画延迟。

我可以使用nth-child(1){},nth-child(2){}等手动完成此操作,但这显然是凌乱的,并且元素数量有限。

我也尝试过循环,虽然这对于(10n + 1)效果很好,如果我试图偏离a + b公式(100n + 10n),它会中断。另外我怀疑每10n增加1秒和10秒会增加1秒,因为其中一个会覆盖另一个。

这个问题类似于this one from 2011,它仍然是开放的,但很多时间过去了,这些天可能有更好的答案。

2 个答案:

答案 0 :(得分:5)

请记住,您也可以在CSS中分配变量。

:nth-child(1) { --nth-child: 1 }
:nth-child(2) { --nth-child: 2 }
:nth-child(3) { --nth-child: 3 }

然后您可以像这样应用它:

animation: fade-in calc(var(--nth-child) * 1s) 1s forwards;

下面是一些demo

答案 1 :(得分:4)

CSS不支持使用当前匹配的子元素的当前值或:nth-child()表达式作为变量的当前匹配的子元素的索引,calc()表达式和{{1} }表达式或属性值的任何其他部分。

您可以获得的最接近的是使用预处理器自动执行手动过程, 支持在选择器中插入变量。如果您事先知道需要构建的规则数量,那么这将有效。