iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0
Modern Web

從骨架到靈魂:網頁構成三部曲系列 第 20

Day - 20 CSS 進階動畫

  • 分享至 

  • xImage
  •  

今天要來做一個很常見又很酷的效果——打字機動畫 (Typewriter Effect)。這個效果可以讓文字像打字一樣,一個字一個字出現,最後停留片刻,再消失,並且不斷循環播放。這種動畫效果常被用在網頁首頁的標題或口號,能讓觀眾一眼就被吸引住。接下來我會用「傳奇選手:Faker」這段文字示範,並逐步解釋程式碼的重點。

1.HTML 結構

<body>
  <div class="typewriter">
    <h1>傳奇選手:Faker</h1>
  </div>
</body>

真正的動畫效果會套用在這個 <h1>

2.打字機文字樣式

.typewriter h1 {
  font-size: 4rem;
  font-family: 'Courier New', Courier, monospace;
  color: #fff;
  overflow: hidden;
  border-right: .15em solid orange;
  white-space: nowrap;
  margin: 0 auto;

  animation: typing-cycle 5s steps(10, end) infinite,
             blink-caret .75s step-end infinite;
}

這裡是 最重要的核心:
overflow: hidden:隱藏超出容器的文字,讓字能逐漸顯示。
white-space: nowrap:避免自動換行。
border-right: .15em solid orange:右邊加一條橘色細線,當作游標。
animation:
typing-cycle 5s steps(10, end) infinite → 5 秒跑完「打字→停留→刪除」的循環steps(10, end) 代表這句話共有 10 個字元。

blink-caret → 讓游標持續閃爍。

3.打字循環動畫

@keyframes typing-cycle {
  0%   { width: 0 }      
  40%  { width: 100% }    
  60%  { width: 100% }    
  100% { width: 0 }       
}

這是整個效果的時間流程:
0% → 40%:逐字打出來
40% → 60%:停留一小段時間
60% → 100%:刪除文字

4.游標閃爍動畫

@keyframes blink-caret {
  from, to { border-color: transparent }
  50% { border-color: orange; }
}

這個動畫控制游標閃爍,模擬真實打字機的效果
blink-caret 這個動畫的完整播放流程如下:
動畫開始 (0%): 游標是透明的 (看不到)
動畫進行到一半 (50%): 游標變成橘色的 (看得到)
動畫結束 (100%): 游標又變回透明的 (看不到)

成品:short


上一篇
Day - 19 CSS 基本動畫
系列文
從骨架到靈魂:網頁構成三部曲20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言