変形
zoom
zoom は、要素を中身ごと拡大・縮小します。transform の scale と違い、大きくした分だけまわりの要素を押しのけます。
構文
<number [0,∞]> | <percentage [0,∞]>プレビュー
1234
プリセット
見本
右下の角をドラッグするとサイズを変えられます
コード
.box {
display: flex;
align-items: flex-start;
}
.box > :nth-child(2) {
zoom: 1.5;
}コントロール
zoom1.5
1234
解説
値の書き方
1 で等倍、2 で 2 倍、0.5 で半分です。150% のようにパーセントでも書けます。負の値は書けず、0 は互換のため 1 と同じに扱われます。初期値は 1 です。
scale との違い
zoom は、幅や余白、文字の大きさなどの長さそのものを掛け算します。そのため要素が実際に大きくなり、まわりのレイアウトも動きます。プレビューでは 2 番目の項目に書いているので、3・4 番目の項目が押し出されます。
scale や transform: scale() は、描いたあとの見た目だけを拡大します。場所は元の大きさのままなので、まわりの要素に重なります。
気をつけること
- パーセントや auto で決まる長さは変わりません。
width: 50%の要素にzoom: 2を書いても幅は親の半分のままで、中の文字や余白だけが大きくなります。 zoom自体は継承しませんが、子孫の長さも一緒に拡大されます。入れ子にすると掛け算になり、zoom: 2の中のzoom: 2は 4 倍です。- 長く非標準のプロパティで、Firefox は対応していませんでした。仕様にまとめられ、Firefox も 126 から対応しています。