CSS3のTransformsで色々アニメーションできるので、無駄なスクリプトはいらな(ry | φ(..)メモとして残しておこう…

CSS3のTransformsで色々アニメーションできるので、無駄なスクリプトはいらな(ry



Transforms can be animated in a variety of CSS3






どうすか?
回っちゃってますか?

今回設定したCSSはこんな感じです。



/*◆◆◆◆◆◆◆◆◆アイコン回転◆◆◆◆◆◆◆◆◆◆◆*/

div.spinning_icons a{
width:32px;
height:32px;
display:inline-block;
text-indent:-9999em;
background-position:0 0;
background-repeat:no-repeat;
z-index:2000;
overflow:hidden;
margin-left:10px;
float:left;
/*アニメーションさせながら元に戻す*/
transition: all 0.5s ease-in;
-webkit-transition: all 0.5s ease-in;
-moz-transition: all 0.5s ease-in;
-ms-transition: all 0.5s ease-in;
}

/*===============<a>タグをアニメーションさせる==========*/

div.spinning_icons a:hover{
transform: rotate(750deg) scale(1.5);
-webkit-transform: rotate(750deg) scale(1.5);
-moz-transform: rotate(750deg) scale(1.5);
-ms-transform: rotate(750deg) scale(1.5);

/* アニメーションの秒数を設定 */
transition: transform 1s ease-out;
-webkit-transition: -webkit-transform 1s ease-out;
-moz-transition: -moz-transform 1s ease-out;
-ms-transition: -moz-transform 1s ease-out;

}

/*===============アイコン画像==============*/
.twitter{ background:url('http://webmage.pro/blog_img/icons/twitter_32.png'); }
.delicious{ background:url('http://webmage.pro/blog_img/icons/delicious_32.png'); }
.digg{ background:url('http://webmage.pro/blog_img/icons/digg_32.png'); }
.dribbble{ background:url('http://webmage.pro/blog_img/icons/dribbble_32.png'); }
.email{ background:url('http://webmage.pro/blog_img/icons/email_32.png'); }
.facebook{ background:url('http://webmage.pro/blog_img/icons/facebook_32.png'); }
.flickr{ background:url('http://webmage.pro/blog_img/icons/flickr_32.png'); }
.foursquare{ background:url('http://webmage.pro/blog_img/icons/foursquare_32.png'); }
.linkedin{ background:url('http://webmage.pro/blog_img/icons/linkedin_32.png'); }
.rss{ background:url('http://webmage.pro/blog_img/icons/rss_32.png'); }
.stumbleupon{ background:url('http://webmage.pro/blog_img/icons/stumbleupon_32.png'); }
.youtube{ background:url('http://webmage.pro/blog_img/icons/youtube_32.png'); }



あとは、ページ内に


<div class="spinning_icons">
<a href="#" class="twitter" title="twitter">Twitter</a>
<a href="#" class="delicious" title="delicious">Delicious</a>
<a href="#" class="digg" title="digg">Digg</a>
<a href="#" class="dribbble" title="dribbble">Dribbble</a>
<a href="#" class="email" title="email">Email</a>
<a href="#" class="facebook" title="facebook">Facebook</a>
<a href="#" class="flickr" title="flickr">Flickr</a>
<a href="#" class="foursquare" title="foursquare">Foursquare</a>
<a href="#" class="linkedin" title="linkedin">Linkedin</a>
<a href="#" class="rss" title="rss">RSS</a>
<a href="#" class="stumbleupon" title="stumbleupon">Stumbleupon</a>
<a href="#" class="youtube" title="youtube">YouTube</a>
</div>


こんな感じでタグを記述しているだけです。

いろいろ書いてあるように見えますが、ほとんどサイズ云々の設定がしてあるので、実際のアニメーションはこの部分で設定されてます。
     ▼

div.spinning_icons a:hover{
transform: rotate(750deg) scale(1.5);
-webkit-transform: rotate(750deg) scale(1.5);
-moz-transform: rotate(750deg) scale(1.5);
-ms-transform: rotate(750deg) scale(1.5);

/* アニメーションの秒数を設定 */
transition: transform 1s ease-out;
-webkit-transition: -webkit-transform 1s ease-out;
-moz-transition: -moz-transform 1s ease-out;
-ms-transition: -moz-transform 1s ease-out;

}


transform: rotate(750deg) scale(1.5);
       ▲        ▲
      750°回転    1.5倍に拡大

transition: transform 1s ease-out;
       ▲
      transformの部分を1秒でease-outする



という…。
簡単な設定です。

「-webkit-…」とか「-moz-」とか書いてあるのは、まだW3Cで正式に仕様が固まってないからで、いずれは

transform: rotate(750deg) scale(1.5);
transition: transform 1s ease-out;

って2行書くだけでよくなるみたいです。

うーん…簡単ですね。
ちなみに、transformのプロパティは


transform-origin → transformの支点を設定
rotate → 回転
translate → 移動
scale → 拡大/縮小
skew → X軸,Y軸へのゆがみ

backface-visibility → 要素の裏側の可視,不可視
perspective → 奥行き
perspective-origin → 奥行きの支点
transform-style → 2D(flat)と3Dの指定


とゆー感じで色々あります。

プロパティがいろいろあるし、見ながらじゃないとわからないよ…('A`)
って人は、こちらへどうぞ。
http://westciv.com/tools/transforms/index.html

かなり捗りますぞ。

でも、「translate → 移動」ってあまり使わないんじゃないかと思うんですよね。
ホバー前とホバー後の位置を変えるだけで、「transition: all 1s …」ってやればアニメーションするし。

ホバーアクション以外にアニメーション使うことってなかなか無いんですが…。