skew()

Baseline 已廣泛支援

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

skew() CSS 函式定義了一個在2D平面上傾斜元素的變換。其結果是 <transform-function> 資料型別。

試一試

transform: skew(0);
transform: skew(15deg, 15deg);
transform: skew(-0.06turn, 18deg);
transform: skew(0.312rad);
<section id="default-example">
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>

此變換是一種剪下對映(transvection),它透過水平和垂直方向上的特定角度扭曲元素內的每個點。效果就像你抓住元素的每個角並沿特定角度拉動它們一樣。

每個點的座標都會根據指定角度和到原點的距離按比例修改。因此,離原點越遠的點,增加的值越大。

語法

css
skew(ax)

skew(ax, ay)

ax

是一個 <angle>,表示沿 x 軸扭曲元素所使用的角度。

ay 可選

是一個 <angle>,表示沿 y 軸扭曲元素所使用的角度。如果未定義,其預設值為 0,導致純粹的水平傾斜。

笛卡爾座標,在 ℝ^2 齊次座標,在 ℝℙ^2 笛卡爾座標,在 ℝ^3 齊次座標,在 ℝℙ^3
(1tan(ax)tan(ay)1)\left( \begin{array}{cc} 1 & \tan(ax) \\ \tan(ay) & 1 \end{array} \right)
(1tan(ax)0tan(ay)10001)\left( \begin{array}{ccc} 1 & \tan(ax) & 0 \\ \tan(ay) & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)
(1tan(ax)0tan(ay)10001)\left( \begin{array}{ccc} 1 & \tan(ax) & 0 \\ \tan(ay) & 1 & 0 \\ 0 & 0 & 1 \end{array} \right)
(1tan(ax)00tan(ay)10000100001)\left( \begin{array}{cccc} 1 & \tan(ax) & 0 & 0 \\ \tan(ay) & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array} \right)
[1 tan(ay) tan(ax) 1 0 0]

正式語法

<skew()> = 
skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )

示例

僅沿 x 軸傾斜

HTML

html
<div>Normal</div>
<div class="skewed">Skewed</div>

CSS

css
body {
  margin: 20px;
}

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

.skewed {
  transform: skew(10deg); /* Equal to skewX(10deg) */
  background-color: pink;
}

結果

沿兩個軸傾斜

HTML

html
<div>Normal</div>
<div class="skewed">Skewed</div>

CSS

css
body {
  margin: 20px;
}

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

.skewed {
  transform: skew(10deg, 10deg);
  background-color: pink;
}

結果

規範

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

瀏覽器相容性

另見