css animation text effect keyframes

Day 17 - 彈跳文字效果最終回

Jeremy Jeremy
2024.08.28

哈哈哈,在拆開這個特效水了兩天文後,今天要來把壓下去和彈起來的效果合併在一起,讓文字在滑鼠滑過時有壓下去又跳起來的感覺。
跟前兩天單純只用 transition 不同,今天我們要用到 animation 來實現這個效果,畢竟 transition 還是很難做到這種精細的控制。
先來看 code,其實變動的不多:

<div class="bounce-text">
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
  <span></span>
</div>
.bounce-text {
  font-size: 4rem;
  font-weight: bold;
  display: inline-block;
  position: relative;
}

.bounce-text span {
  display: inline-block;
  position: relative;
}

.bounce-text span:hover {
  animation: jump-text 1.5s 0s ease;
}

@keyframes jump-text {
  0%, 100% {
    transform: translateY(0) scale(1.1);
  }
  25%, 75% {
    transform: translateY(0) scale(1.2, 0.8);
  }
  50% {
    transform: translateY(-50px) scale(0.8, 1.2);
  }
}
CodePen Embed

可以看到這個復合特效的關鍵是在 @keyframes 中針對 4 段不同的時間點設定不同的 transform 效果,讓文字在滑鼠滑過時有壓下去又跳起來的感覺:

  1. 0% 和 100% 時,文字保持原位,並稍微放大。
  2. 25% 和 75% 時,文字保持原位,寬度稍微變寬、高度稍微變矮,呈現微微壓扁的感覺。
  3. 50% 時,文字上移 50px,寬度稍微變窄、高度稍微變高,呈現彈起來的感覺。

Reference

關於 @keyframes 裡的設定,我就直接照搬 This.Web 的參數了。