CSS Transform に関する Tips

はいどうも!
バーチャル Youtuber ではない面白法人カヤックのごんです。
CSS Transform の Tips をやっていきます。

1. CSS Transform は後ろから適用される

transform: rotate(45deg) translateX(100px);

は、45度回転してから X 方向に 100px 移動、ではなく
X 方向に 100px 移動してから、45度回転 です。

これは百聞は一見にしかずなので、下にデモを貼ります。

なんで逆にしちゃったんですかね。

2. CSS Transform のパーセント表記は要素の幅に依存する

CSS Transform Translate のパーセント表記は、
DOM 要素とは異なり、親要素ではなく、自身の幅に対する割合を指します。

これも百聞は一見にしかずなので、デモを貼ります。

これは、特に要素の中央寄せする際に非常に便利な性質です。
Flexboxmargin: auto によるセンタリングと使い分けて利用しましょう。

3. CSS Animation は CSS Transform の記述する順番によって変わる

CSS Animation で、CSS Transform の値を変化させる場合、
記述する順番に依って、動き方が変わります。

百聞は一見にしかずとも言いますし、デモを貼ります。

違いがわかりますか?
左の猫ちゃんはまっすぐこっちに駆け寄ってくるのに対し、
右の猫ちゃんは蛇行しながらにじり寄ってきています。
耳の先に着目すると違いがよく分かります。

4. matrix は CSS Animation でうまく補間されたりされなかったりする

我こそは算術の学徒、CSS Transform など行列で書いてくれるわ。
などと意気込んで、matrix にまとめると、
意図通りに動いたり動かなかったりします。

まずは百聞は一見にしかず、デモを御覧いただきたい。

ややこしいので、おとなしく translate や rotate を使うのが吉です。
matrix の Decompose や Recompose についての詳しい仕様を知りたい人は、
W3C の Specification を読みましょう。

5. canvas の translate や scale は CSS Transfrom とほぼ同じ

canvas の Context2D には、translate や scale, rotate と言ったメソッドが生えており、
これは全く、CSS Transform のように扱え、具合が良いです(一見略)。

終わりに

百聞は一見にしかずのしかずってなんなんですかね。
100倍ってすごいな。100倍だぞ100倍

www.kayac.com

面白法人カヤックでは、この目で見たものしか信じないエンジニアを募集中です。
本当に大切なものは目に見えないんだよ。
必要なことは全てソースコードにコメントで書け。
鎌倉でも働けるのでまずはオフィスを100回見に来てください!


面白法人カヤックアドベントカレンダー、
明日は新卒の入江さんが書きます。
よろしくお願いいたします。