scale()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

scale() CSS 函式定義了一種在二維平面上調整元素大小的變換。由於縮放量由一個向量 [sx, sy] 定義,因此可以以不同的比例調整水平和垂直尺寸。其結果是一個 <transform-function> 資料型別。

試一試

transform: scale(1);
transform: scale(0.7);
transform: scale(1.3, 0.4);
transform: scale(-0.5, 1);
<section id="default-example">
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>

此縮放變換由一個二維向量來描述。其座標定義了在每個方向上的縮放量。如果兩個座標相等,則縮放是均勻的(isotropic),並且元素的寬高比得以保留(這是一種位似變換)。

當座標值在 [-1, 1] 範圍之外時,元素會沿該維度放大;在此範圍內時,則會縮小。如果值為負,則會使元素在該維度上進行點反射。值為 1 時沒有效果。

備註: scale() 函式只在二維空間進行縮放。要在三維空間進行縮放,請改用 scale3d()

語法

css
scale(sx)

scale(sx, sy)

sx

一個 <number><percentage>,表示縮放向量的橫座標(水平,x 軸分量)。

sy 可選

一個 <number><percentage>,表示縮放向量的縱座標(垂直,y 軸分量)。如果未定義,其預設值為 sx,從而實現保持元素寬高比的均勻縮放。

笛卡爾座標,在 ℝ^2 齊次座標,在 ℝℙ^2 笛卡爾座標,在 ℝ^3 齊次座標,在 ℝℙ^3
(sx00sy)\left( \begin{array}{cc} sx & 0 \\ 0 & sy \end{array} \right)
(sx000sy0001)\left( \begin{array}{ccc} sx & 0 & 0 \\ 0 & sy & 0 \\ 0 & 0 & 1 \end{array} \right)
(sx000sy0001)\left( \begin{array}{ccc} sx & 0 & 0 \\ 0 & sy & 0 \\ 0 & 0 & 1 \end{array} \right)
(sx0000sy0000100001)\left( \begin{array}{cccc} sx & 0 & 0 & 0 \\ 0 & sy & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)
[sx 0 0 sy 0 0]

正式語法

<scale()> = 
scale( <number> , <number>? )

無障礙

縮放/縮放動畫對無障礙性存在問題,因為它們是某些型別偏頭痛的常見誘因。如果需要在網站中包含此類動畫,應提供一個控制元件,允許使用者關閉動畫,最好是全站範圍的。

此外,可以考慮使用 prefers-reduced-motion 媒體特性——用它來編寫媒體查詢,以便在使用者系統偏好設定中指定了減弱動畫時關閉動畫。

瞭解更多

示例

同時縮放 X 和 Y 維度

HTML

html
<div>Normal</div>
<div class="scaled">Scaled</div>

CSS

css
div {
  width: 80px;
  height: 80px;
  background-color: skyblue;
}

.scaled {
  transform: scale(0.7); /* Equal to scaleX(0.7) scaleY(0.7) */
  background-color: pink;
}

結果

分別縮放 X 和 Y 維度,並平移原點

HTML

html
<div>Normal</div>
<div class="scaled">Scaled</div>

CSS

css
div {
  width: 80px;
  height: 80px;
  background-color: skyblue;
}

.scaled {
  transform: scale(2, 0.5); /* Equal to scaleX(2) scaleY(0.5) */
  transform-origin: left;
  background-color: pink;
}

結果

規範

規範
CSS 變換模組級別 1
# funcdef-transform-scale

瀏覽器相容性

另見