我需要通过CSS打字机效果循环,并更改每个循环的文本。这是我使用的打字机效果的代码。我猜我需要使用javascript,但我不知道如何去做这件事。我如何能做到这一点的任何想法?
Snippet Reference
.typewriter h1 {
overflow: hidden; /* Ensures the content is not revealed until the animation */
border-right: .15em solid orange; /* The typwriter cursor */
white-space: nowrap; /* Keeps the content on a single line */
margin: 0 auto; /* Gives that scrolling effect as the typing happens */
letter-spacing: .15em; /* Adjust as needed */
animation:
typing 3.5s steps(40, end),
blink-caret .75s step-end infinite;
}
body {
background: #333;
color: #fff;
font-family: monospace;
padding-top: 5em;
display: flex;
justify-content: center;
}
/* DEMO-SPECIFIC STYLES */
.typewriter h1 {
overflow: hidden; /* Ensures the content is not revealed until the animation */
border-right: .15em solid orange; /* The typwriter cursor */
white-space: nowrap; /* Keeps the content on a single line */
margin: 0 auto; /* Gives that scrolling effect as the typing happens */
letter-spacing: .15em; /* Adjust as needed */
animation:
typing 3.5s steps(40, end),
blink-caret .75s step-end infinite;
}
/* The typing effect */
@keyframes typing {
from { width: 0 }
to { width: 100% }
}
/* The typewriter cursor effect */
@keyframes blink-caret {
from, to { border-color: transparent }
50% { border-color: blue; }
}
<div class="typewriter">
<h1>The cat and the hat.</h1>
</div>
3条答案
按热度按时间fnatzsnv1#
是的,你需要一些脚本,至少要检测动画的结尾,然后刷新html内容,你可以把所有要显示的消息存储在一个数组中,然后循环遍历它,然后你必须根据显示的文本长度来调整速度。
还要检查不同的语法https://www.w3schools.com/jsref/prop_style_animation.asp
fcwjkofz2#
这可以通过jQuery(或者JavaSript,如果你喜欢的话)来完成。简单地说,等到动画完成,然后替换包含的HTML。
nnsrf1az3#
你不需要javascript。
不要被愚弄。这只能用CSS来完成,请参阅:https://stackoverflow.com/a/57887588/2397550的工作示例。您可以将CSS动画拆分为几个单独的动画,并使用
animation-delay
依次执行它们。你的解决方案的一个(另一个)缺点是它需要等宽字体,这是我不希望有的限制。