HTML / CSS / jQuery コーディング

【CSS】「transition」と「box-shadow」と「transform」で作るマウスオーバー効果


画像にオンマウスすると、影が付いたり拡大する効果を「transition」「box-shadow」「transform」を使って作ってみました。

それぞれの効果について解説していきます。

最初にデモページをご覧ください。

デモページを見る

 

それでは、デモページの左の画像を解説します。まずはHTMLとCSSの記述から。

HTML

<div class="flex_item">
<a href="#"><img src="img/img01.jpg" alt="image" class="kakudai"></a>
<p>画像が拡大します</p>
</div>

CSS

.flex_item img {
width: 100%;
border: 3px solid #fff;
border-radius: 15px;
transition: all 0.3s;
-webkit-transition: all 0.3s;
}
.kakudai:hover {
border: 3px solid #ff0000;
box-shadow: 0 10px 10px -5px rgba(0,0,0,0.5);
-webkit-box-shadow: 0 10px 10px -5px rgba(0,0,0,0.5);
transform: scale(1.05) rotate(0.1deg) translateX(0);
-webkit-transform: scale(1.05) rotate(0.1deg) translateX(0);
}

次に、CSSのそれぞれの動きを順番に確認していきます。

「transition」について 

「transition」は、時間的変化を指定できます。下記4つの一括指定プロパティです。

  • transition-property:CSSプロパティの名前で、「margin」などです。
  • transition-duration:所要時間で、開始から終わりまで何秒かけるかです。
  • transition-timing-function:変化のタイミングを指定するもので、例えば「ease-out」はゆっくり終わる動きになります。
  • transition-delay:変化がいつ始まるかを指定します。

今回の「transition: all 0.3s;」は全てのプロパティの動きが0.3秒で変化するという事になります。

動きについて、こちらで分かりやすく解説されていますのでご覧ください。
https://developer.mozilla.org/ja/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions

「box-shadow」について 

「box-shadow」は、ボックスに影をつけることができます。

書き方

box-shadow: 10px 10px 10px 10px rgba(0,0,0,0.5) inset;
  • 1番目の値は水平方向の距離で、正の値は右へ、負の値をは左へ移動します。
  • 2番目の値は垂直方向の距離で、正の値は下へ、負の値をは上へ移動します。
  • 3番目の値はぼかしの距離で、値が大きいほど影の端のぼかしが強く、0だとぼかし無しです。負の値は指定できません。
  • 4番目の値は広がりの距離で、正の値は影を全方向に拡大、負の値は縮小します。
  • rgbaは色指定で、4つめの「0.5」は透明度です。
  • insetを指定すると、ボックスの内側に影をつけることができます。

「transform」について 

「transform」は、要素を拡大縮小、回転、移動、傾斜を指定できます。

関数を半角スペースで区切る事で複数指定することができます。

  • scale:拡大縮小(1を基準に伸縮する比率を指定します。)
  • rotate:回転(90度回転させたいときは90deg)
  • translate:移動(単位はpxで指定します。)
  • skew:傾斜(単位はdegで指定します。)

デモページの真ん中の画像はオンマウスで画像が少し回転しますが、下記の記述になっています。

CSS

transform: scale(1.05) rotate(2.0deg) translateX(0);

これは、「1.05」拡大して「2.0deg」回転させて、移動はしないという事になります。

デモページの右の画像は、あまり使う事が無さそうな動きですが、下記の記述になっています。

CSS

transform: scale(1.05) rotate(0.1deg) translateY(-30px);

「translateY(-30px)」は垂直方向で負の値なので上に移動します。

 

解説は以上となります。

また、デモページのファイル一式をダウンロードできますので、よろしければどうぞ。

【CSS】「transition」と「box-shadow」と「transform」で作るマウスオーバー効果

【 css43.zip(564KB) 】

-HTML / CSS / jQuery コーディング
-,

© 2026 Web担当屋 ブログ