今天要學習如何使用 CSS 來模擬打字機的文字輸入效果,讓文字逐字呈現。會利用 border-right
來模擬光標的閃爍效果,並使用 steps()
函數來精確控制每個字母的出現時間
<div class="typewriter">
<p>Hello Welcome!</p>
</div>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background: linear-gradient(90deg, #99CCFF, #FFB2FF);
}
.typewriter p {
font-family: monospace;
font-size: 40px;
white-space: nowrap;
overflow: hidden;
border-right: 2px solid black;
width: 0; /* 初始寬度為0,隨著動畫逐漸擴展 */
animation: typing 5s steps(30) 1s infinite, blink 500ms step-end infinite;
color: white;
}
flex
居中對齊容器中的內容steps(30)
將動畫分成 30 個步驟,每個步驟對應一個字母的出現,使得文字逐字顯示,且在開始前等待 1 秒,並且不斷重複播放@keyframes typing {
from {
width: 0;
}
to {
width: 100%;
}
}
@keyframes blink {
50% {
border-color: transparent;
}
}