2011.04.21 achamaro
前回に引き続き、CSS3でアニメーションを試してみました。
ついでにtransformも使って3Dのアニメーションを作ってみます。前回はanimationを使ってアニメーションを作りました。
今回はtransitionを使ってやってみようと思います。
では早速コード
の前に、簡単に説明を書いておきます
transitionは指定されたプロパティが指定された値になるまで指定した時間をかけ、変化させます。
例えば、以下のコードだとマウスオーバー、アウトでプロパティの値が変わると、
変更された値になるまで1秒かけ変化していきます。
【CSS】
#switchBtn { cursor: pointer; ---① } .imageArea { position: relative; ---② width: 500px; height: 200px; background-color: #000; overflow: hidden; -webkit-perspective: 600; ---③ } .imageArea img { position: absolute; top: 50px; ---④ left: 200px; ---④ height: 100px; width: 100px; -webkit-transition:-webkit-transform 1s ease 0; ---⑤ -webkit-transform-origin: 50% 50% -200px; ---⑥ -webkit-transform-style: preserve-3d; ---⑦ }【JavaScript】
$(function(){ var _deg = 0; // 基準になる角度 var _interval = 360 / $(".imageArea img").length; // 画像の配置間隔(角度) // 画像配置関数 function setDeg(deg) { // imgごとに処理 $(".imageArea img").each(function(i) { // imgを配置する角度 var edeg = deg + i * _interval; // css設定 $(this).css({ "-webkit-transform": "rotateY(" + edeg + "deg)", "z-index": parseInt(Math.cos(edeg / 180 * Math.PI) * 100) + 100 }); }); } // switchボタン押下で回転 $("#switchBtn").bind("click",function(e) { _deg -= _interval; // 基準になる角度を移動 setDeg(_deg); // 画像配置 }); // 初期配置 setDeg(_deg); });※chromeかsafariでご覧下さい