在实现typewriter时,对于steps和@keyframes rule使用出现了混淆.
--characters是个自定义变量,需要动画的字符数,比如取10.
/* ... */
.typewriter-effect > .text {
max-width: 0;
animation: typing 3s steps(var(--characters)) infinite;
white-space: nowrap;
overflow: hidden;
}
@keyframes typing {
75% {
max-width: calc(var(--characters) * 1ch);
}
100% {
/* max-width: calc(var(--characters) * 1ch); */
max-width: calc(var(--characters) * 1ch);
}
}
/* ... */
- 我想知道typing中100% max-width: calc(var(--characters) * 1ch)这个注释掉是不是就相对于max-width: 0了.还是说是继续沿用%75的样式?
- 这里的steps(10)的10个阶段是针对于typing中三个阶段(0-75-100)阶段中每个阶段的吗(也就是每帧分为10个阶段)还是作用于0-100整个动画的?
按照我自己的理解,如果有注释%75-%100这期间是max-width: 0;没有注释,这时候这段期间会保持3/4秒.也就是文字type到结尾的时候会保持这么长时间的暂停.
因为还有一个
scale()
的缩放,如果不设置rotate()
的话,如果再有动画就不会生效了。这个和
transform
的占用有关,所以后来出现了单独的translate
、rotate
、scale
这些个新的CSS属性。相关阅读
由 transform 被占用引发的思考🤔
解放生产力!transform 支持单独赋值改变
Edit
增加一个对比动画: