前提・実現したいこと
WebサイトにjQueryを適用して装飾しています。
jQuery のhover()
、addClass()
、removeClass()
とCSSを用いて画像にマウスカーソルを乗せた時にその画像が拡大し、外すと元のサイズに戻る効果をつけました。
初期サイズから拡大サイズになるまでの所要時間、そして拡大サイズから初期サイズに戻るまでの所要時間はCSSのtransition
を用いて指定することができるかと思いますが、この時、
transition
を指定をしなくてもある程度(約transition: .3s;相当)なめらかに拡大・縮小が行われるのはなぜなのでしょうか?
また、
2. CSSで拡大用のセレクタに対してtransition
を定義すると初期サイズから拡大サイズになるまでの所要時間のみを指定することになるかと思いますが、初期サイズ用のセレクタに対してtransition
を定義した場合、拡大サイズから初期サイズに戻るまでの所要時間が指定されるのは理解できるのですが、同時に初期サイズから拡大サイズになるまでの所要時間も指定されることになるのはなぜなのでしょうか?
該当のHTMLソースコード
<html lang="ja"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Page Title</title> <link rel="stylesheet" href="stylesheet.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> </head> <body> <!--効果を付ける画像--> <div class="column-image" style="background-image: url(https://image.jpg)"></div> <script type="text/javascript" src="script.js"></script> </body> </html>
該当のCSSソースコード
.column-image { width: 100%; height: 277px; background-position: center; background-size: 100% auto; transition: all .5s; /* 初期サイズ->拡大サイズ, 拡大サイズ->初期サイズの所要時間 */ } .column-image.zoom { background-size: 120% auto; /* .column-image {transition: all .5s;}を削除し、下記を定義した場合は初期サイズ->拡大サイズの所要時間のみが指定される */ /*transition: all .5s;*/ } /* 上記コードで初期サイズ->拡大サイズの所要時間も定義されるのはなぜでしょうか? */
該当のjQueryソースコード
$(function() { $(".column-image").hover( function() { $(this).addClass("zoom"); }, function() { $(this).removeClass("zoom"); } ); });

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。