ボタン・広告

マウスホバーで文字が変化するボタン

ホバーで文字が切り替わるボタン3種のCSS

See the Pen Untitled by チータツ (@cheese_fuji) on CodePen.

HTMLの解説

  • ボタン用の要素divを作成
  • ボタン内の要素全体をaタグで囲む(マウスホバーのないスマホ対策)
  • aタグ内に標準時・ホバー時用のテキスト要素を2つ作成する

CSSの解説

  • ボタン枠の要素div.ch-boxのレイアウトを調整する
    • position: relativeにする
    • heightwidthを指定する
  • テキスト要素の幅と位置をボタンに合わせる(2つを重ねる)
    • position: absolutetop:0 left: 0 で位置を調整
    • width: 100% height: 100% でボタンに大きさを合わせる
  • ホバー時に表示するテキスト.after-textを隠しておく
    • visibility: hidden で非表示に
    • opacity: 0 で透明に

応用CSS

今回はvisibilityとopacityを置き換えれば、他のホバーアニメーションで文字を切り替えることが可能です。ただし、やり過ぎるとくどくなるので、ほどほどにしておきましょう。(個人的にはフェードインが一番しっくり来ると思います)

色が反転して文字が切り替わるボタン

ボタン全体には背景色をつけずにborderの枠線だけ付けておき、.before-textは色付きの文字、.after-textは背景付きの白文字にすることで、色が反転したような演出をすることができます。

仕組み的にはマウスホバーで背景色が反転するリンクと組み合わせたような感じです。

See the Pen Untitled by チータツ (@cheese_fuji) on CodePen.

文字がスライドで切り替わるボタン

opacityvisibilityによるフェードインの代わりに、translate()を使って文字を座標移動で切り替えます。

See the Pen Untitled by チータツ (@cheese_fuji) on CodePen.

  • ボタン外に出た要素を隠すため、親要素.ch-buttonoverflow: hiddenを追記
  • .before-textを右へ追い出す
    • ホバー時にtranlateX(110%)でボタンの右へ
  • .after-textを左からスライドさせる
    • translateX(-110%)ボタンの左に配置させておく
    • ホバー時にtranslateX(0)でボタンの中へ

translateY()に置き換えれば、上から下へのスライドに変更できます