例えばメニューバーのボタンにカーソルをのせたときなどに、なにかしらの変化があると、ユーザーにとっても使いやすくなります。
1 2 3 4 5 6 |
a{ background-color: black; } a:hover{ background-color: red; } |
こちらは最も基本的な、マウスオーバー時の背景色を変える記述ですが、このままだと単純な変化しかつけることができません。
今回はCSSだけで簡単に実装できる、より動きのあるエフェクトをご紹介します。
要素が変化する時間を指定する
1 2 3 4 5 6 7 |
a{ background-color: black; transition: all 1.5s; } a:hover{ background-color: red; } |
「transition」をつけることで単調な変化にならず、徐々に色が変化して柔らかい雰囲気を出すことができます。記述する際に、a:hover要素の方に記述してしまうと、カーソルを要素から離して変化が戻るときの「transition」の効果が適用されなくなってしまうので注意してください。
「all」はすべてのプロパティの変化に適用するということです。「all」を変化させたいプロパティの名前に変更することで、そのプロパティにだけ「transition」を適用させることも可能です。例えば、背景色はデフォルトの速さで変化させたいが、文字色だけ徐々に変化させたいときは「all」の代わりに「color」(文字色を指定するプロパティ)と記述します。
「1.5s」は変化する秒数を表します。数値を変えることで、変化のスピードも変わります。
使う色を工夫することで、さらに様々なタイプの変化をつけることができます。
要素の透明度で変化をつける
1 2 3 4 5 6 7 |
a{ opacity: 1; transition: all 1s; } a:hover{ opacity: 0.5; } |
「opacity」は、要素の透明度を指定する際に使用します。hover時の「opacity」の値を1以下にすることで、要素が光るように見せることができます。
要素の大きさで変化をつける
1 2 3 4 5 6 |
a{ transition: all 2s; } a:hover{ transform: scale(1.3,1.3); } |
「scale(1)」が基準です。hover時の「scale()」内に拡大したい倍率を指定することで、要素が拡大します。scale()の数字を1より小さくすることで、逆に要素を小さくすることもできます。
また、「scaleX()」で横方向のみ、「scaleY()」で縦方向のみを指定します。縦横の倍率が同じ場合は、片方省略して記述することも可能です。
要素を移動させる
1 2 3 4 5 6 |
a{ transition: all 1s; } a:hover{ transform: translate(5px,5px); } |
「translate()」の中に移動させたい距離をピクセルで記述します。上記の記述だと、要素が右下に移動して、ボタンを押しているように見せることができます。左上に移動させたいときなどは、マイナスの値で指定をしましょう。
「translate」もXとYで縦方向、横方向のみの指定をすることが可能です。
まとめ
このように、CSSに「transition」や「transform」プロパティを使用することで、サイトデザインの幅が広がり、遊び心を取り入れることができます。
上記のサンプルコードをコピペして数値を変えるだけでも全く違う雰囲気になるので、自分のサイトのテーマに合った動きを探してみてください。