CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSSでホバー時にトランジション(アニメーション)を追加する方法を解説

CSSでホバー時にトランジション(滑らかなアニメーション効果)を追加するには、transitionプロパティと:hover疑似クラスを組み合わせて使用します。あらかじめ要素にtransitionを設定しておくことで、ホバー時の変化が瞬時に切り替わるのではなく、指定した時間をかけてスムーズに変化するようになります。

サンプルコード

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style>
    body {
        font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
        padding: 20px;
    }
    .scaleBtn {
        display: inline-block;
        background-color: #0c1377;
        border: none;
        color: white;
        padding: 16px 32px;
        text-align: center;
        font-size: 16px;
        transition: 0.3s;
        margin: 20px;
    }
    .scaleBtn:hover {
        transform: scale(1.5);
    }
</style>
</head>
<body>
<h1>Transition on hover example</h1>
<button class="scaleBtn">Hover Here</button>
</body>
</html>

実行結果

上記のコードをブラウザで表示すると、次のような画面が出力されます。

CSSでホバー時にトランジション(アニメーション)を追加する方法を解説

Hover Here」ボタンにマウスカーソルを合わせると、ボタンが0.3秒かけて1.5倍に拡大されます。

CSSでホバー時にトランジション(アニメーション)を追加する方法を解説

コードのポイント解説

transitionプロパティ

transition: 0.3s;は、スタイルの変化にかかる時間を0.3秒に設定する指定です。この宣言をホバー前の状態(.scaleBtn側)に記述することで、マウスが乗ったときだけでなく、離れたときにも滑らかなアニメーションが再生されます。

:hover疑似クラス

:hoverは、マウスカーソルが要素の上に乗っている間だけ適用される疑似クラスです。ここではtransform: scale(1.5);を指定しており、ボタンが通常サイズの1.5倍に拡大されます。

変化させるプロパティを限定するテクニック

transition: 0.3s;のように時間だけを指定すると、すべてのプロパティがアニメーション対象になります。transition: transform 0.3s ease;のように対象プロパティやイージング(緩急)を明示的に指定すると、より意図通りの自然な動きを実現できます。

  1. CSSでホバー時に要素をズーム(拡大)表示する方法

    CSSで要素にマウスカーソルを合わせたとき(ホバー時)に、その要素をズーム・拡大表示するには、transformプロパティとtransitionプロパティを組み合わせて使用します。以下に具体的なコード例を示します。コード例<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style> * { box-sizing: bo

  2. CSSでホバー時にトランジション(アニメーション)を追加する方法を解説

    CSSでホバー時にトランジション(滑らかなアニメーション効果)を追加するには、transitionプロパティと:hover疑似クラスを組み合わせて使用します。あらかじめ要素にtransitionを設定しておくことで、ホバー時の変化が瞬時に切り替わるのではなく、指定した時間をかけてスムーズに変化するようになります。 サンプルコード <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1&q