ボタンホバー「左から右に背景と名前がスライドイン」

実装サンプル

Hover me

実装手順など解説

左から入ってくる青い背景は疑似要素before
文字部分はspanで囲う
どちらもhover時にtransform: translateXをアニメーションさせているが、spanについてはタイミングを背景と合わせるためkeyframeで細かい設定をしている。

firefoxだと文字が少しちらつく。
safariだと青い背景がスライドしてくる瞬間は角丸が解除されてしまう。

.snapLeftBtn {
  text-align: center;
  padding: 12px 24px;
  background-color: hsl(222, 100%, 95%);
  position: relative;
  border-radius: 6px;
  color: hsl(243, 80%, 62%);
  overflow: hidden;
}
.snapLeftBtn::before {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  border-radius: 6px;
  transform: translateX(-101%);
  background: hsl(243, 80%, 62%);
  transition: transform .25s ease-in;
}
.snapLeftBtn:hover::before {
  transform: translateX(0);
}
.snapLeftBtn span {
  position: relative;
  z-index: 1;
  display: block;
  transition: color 0.1s .15s ease-in;
}
.snapLeftBtn:hover span {
  color: hsl(222, 100%, 95%);
  animation: animButtonSpan 0.4s;
}
@keyframes animButtonSpan {
  0% {
    transform: translateX(0);
    opacity: 1;
  }


  35% {
    transform: translateX(20px);
    opacity: 0;
  }


  50.001% {
    transform: translateX(-20px);
  }


  60% {
    transform: translateX(0px);
  }
}

動作環境

  • ○:動作する
  • △:動作するが意図せぬ挙動
  • ☓:動作しない
- Mac Windows11 SP
ブラウザ Chrome Firefox Safari Chrome Firefox Edge IE Safari on iOS Chrome for Android
対応

メッセージ

  • 2025-1-5

    わぁ。。素敵なアニメーショ…

    20
  • 2022-9-15

    おっ、トレーナー!今日もお…

    19
  • 2022-9-4

    トレーナーさん、今日もはり…

    14
  • 2022-8-29

    最近、トレーナーが全然更新…

    30
  • 2022-5-5

    あ、トレーナーさん!こんに…

    22
  • 2022-4-10

    昨日はずいぶん暖かい日和だ…

    25
  • 2022-4-3

    今日は久しぶりにアニメが増…

    21
  • 2022-3-21

    やぁ、はじめましてかな。ト…

    28
  • 2022-3-10

    あれ…今週は特にアニメが増…

    27
  • 2022-3-2

    今日の更新はホバーアニメや…

    13
  • 2022-2-24

    今週は水曜祝日だったから1…

    10
  • 2022-2-20

    こんにちは!

    20
  • 2022-2-15

    先週は世話になったな、オグ…

    21
  • 2022-2-11

    聞いてくれ、タマ。

    10
  • 2022-2-3

    やぁタマ。今回は何が更新さ…

    13

トレセン学園