我为单词的每个字母实现了一组类,并为每个类分配了一个transition-delay
,它是字母位置的倍数。
例如:
<span class="char1">H</span>
<span class="char2">e</span>
<span class="char3">l</span>
<span class="char4">l</span>
<span class="char5">o</span>
然后每个字母将被分配一个transition-delay
,如下所示:
.link:hover .char1 {
transition-delay: 15ms;
}
.link:hover .char2 {
transition-delay: 30ms;
}
.link:hover .char3 {
transition-delay: 45ms;
}
.link:hover .char4 {
transition-delay: 60ms;
}
有没有一种方法可以更动态地写这个?我现在用React样式组件重写它,我想知道是否有一种方法可以使用类名中的数字来计算transition-delay。这样就只需要一个类定义,而不是几个(因为我把它变成了一个react组件,我不知道这个词有多长)。
这就是我在React中的工作方式:
const Link = styled.a`
...
.char${num} {
transition-delay: ${num*15}
}
`
其中num
是正整数
3条答案
按热度按时间oyt4ldly1#
是的,CSS variables现在确实存在,你也可以使用像SCSS(我的最爱)或LESS这样的框架!
你想要的东西在标准的CSS变量中是不可能实现的,或者至少是不实用的。我的建议是使用SCSS,如果你的项目中还没有easily add SCSS to a react project,你可以使用它。
你的代码可以转换成SCSS来做你想做的事情,就像这样,它会输出你的确切代码:
或
或者更有可能的情况是,用例将被这样编写,以允许您为每个选择器单独编写样式
如果你想尝试一下,请将其粘贴到这里,以查看编译后的CSS结果:https://sass.js.org/
owfi6suc2#
根据你的样式化方法,你也可以使用内联样式和JavaScript来动态计算CSS属性值,而不需要SCSS。你可以Map一个数组,并使用索引来计算
transitionDelay
,如果一个元素当前被悬停在上面:下面是一个字体大小的例子:
https://codesandbox.io/s/exciting-chaplygin-9czuhv?file=/src/App.js
3wabscal3#
因为你问是否有一种方法可以让它写得更动态,是的,有。我不认为你可以只用CSS让它完全动态,但我认为你可以从你现在的位置得到一半。
除了为每个字符添加一个单独的类之外,至少还有一种方法可以只使用一个类(如下所示),使用
nth-child
伪类选择器。然后你需要关注的就是CSS选择器: