えっ!?まだtransformプロパティを使ってるの!?
広告
みんな独立したプロパティ使ってる。使ってないのお前だけ。
transform
は与えられた要素に移動(translate)、拡大縮小(scale)、回転(rotate)、傾斜(skew)などの変形(transform)を適応させるCSSプロパティです。
transform: translate(-50%, -50%);
で中央寄せ(現在ではあまり使用されないレガシーな手法です)といった静的な配置に用いることもありますが、主にCSSアニメーションを実装する際に使われることが多いです。
そのtransform
プロパティの値のうち傾斜(skew)以外は現在では独立したプロパティで指定することができます。
プロパティを独立させるとアニメーションの管理がしやすくなる
従来のtransform
プロパティでは複数の値が指定された際、1つの値だけをアニメーションする場合にも他の値を重複して指定する必要がありました。
簡単なボタンのサンプルです。
ボタンのシェブロンをCSSで表現するとして、従来のtransform
プロパティで実装するとしたらだいたい次のようなCSSコーディングになると思います。
ここにホバー時はシェブロンを右側に4px移動させるという条件を追加したら、transform
プロパティだと次のように本来書かなくてもいいようなrotate(45deg)
を含む必要があります。
一方独立したプロパティを使用すればrotate(45deg)
を含まずにtranslate
の値を変えるだけで実現できます。
今回は簡単な例ですが、アニメーションが複雑になればなるほど従来のtransform
プロパティでは管理がしにくくなるでしょう。
独立したプロパティのほうが簡潔に書ける
独立したプロパティのほうが短く簡潔にスタイリングできます。
ただし、難点としてはtranslate
にはY軸(あるいはZ軸)のみの記述、scale
にはX軸Y軸(あるいはZ軸)のみの記述は存在しないため、そういった場合はX軸Y軸の指定も追加しないといけません。
それでもtransform
プロパティよりは短い記述で済むことが多いです。
傾斜(skew)には独立したプロパティが無い
他の値に比べるとマイナー感が否めないskew
ですが、残念ながら独立したプロパティはございません。
ただし、独立したプロパティとtransform
プロパティは共存できるため、skew
を指定する場合はtransform
プロパティをそれ専用として扱うのがベターだと思います。
独立したプロパティは全モダンブラウザで対応済み
独立したプロパティは全モダンブラウザで対応されております。懸念のiOS Safariも 14.1 14.5 から導入されているので使用しても差し支えないでしょう。
iOS Safariは14.1からという誤りがありましたが、正しくは14.5からです。ご指摘いただきありがとうございます。
ちなみに記事執筆時点でChatGPTには「そんなプロパティは存在しない」と怒られるため、CSSのレビューをChatGPTで行う際は注意しましょう。