rotate()

Baseline 已廣泛支援

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

rotate() CSS 函式定義了一個轉換,它在不扭曲元素的情況下,圍繞 2D 平面上的一個固定點旋轉元素。它的結果是 <transform-function> 資料型別。

試一試

transform: rotate(0);
transform: rotate(90deg);
transform: rotate(-0.25turn);
transform: rotate(3.142rad);
<section id="default-example">
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>

元素旋轉所圍繞的固定點——如上所述——也稱為變換原點。它預設為元素的中心,但你可以使用 transform-origin 屬性設定自己的自定義變換原點。

語法

css
rotate(a)

a

是一個 <angle>,表示旋轉的角度。旋轉方向取決於書寫方向。在從左到右的上下文中,正角度表示順時針旋轉,負角度表示逆時針旋轉。在從右到左的上下文中,正角度表示逆時針旋轉,負角度表示順時針旋轉。旋轉 180° 稱為點反射

笛卡爾座標,在 ℝ^2 齊次座標,在 ℝℙ^2 笛卡爾座標,在 ℝ^3 齊次座標,在 ℝℙ^3
(cos(a)-sin(a)sin(a)cos(a))\left( \begin{array}{cc} \cos(a) & -\sin(a) \\ \sin(a) & \cos(a) \end{array} \right)
(cos(a)-sin(a)0sin(a)cos(a)0001)\left( \begin{array}{ccc} \cos(a) & -\sin(a) & 0 \\ \sin(a) & \cos(a) & 0 \\ 0 & 0 & 1 \end{array} \right)
(cos(a)-sin(a)0sin(a)cos(a)0001)\left( \begin{array}{ccc} \cos(a) & -\sin(a) & 0 \\ \sin(a) & \cos(a) & 0 \\ 0 & 0 & 1 \end{array} \right)
(cos(a)-sin(a)00sin(a)cos(a)0000100001)\left( \begin{array}{cccc} \cos(a) & -\sin(a) & 0 & 0 \\ \sin(a) & \cos(a) & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right)
[cos(a) sin(a) -sin(a) cos(a) 0 0]

正式語法

<rotate()> = 
rotate( [ <angle> | <zero> ] )

示例

基本示例

HTML

html
<div>Normal</div>
<div class="rotated">Rotated</div>

CSS

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

.rotated {
  transform: rotate(45deg); /* Equal to rotateZ(45deg) */
  background-color: pink;
}

結果

將旋轉與其他變換結合

如果你想對一個元素應用多個變換,請注意指定變換的順序。例如,如果你在平移之前旋轉,平移將沿著新的旋轉軸進行!

HTML

html
<div>Normal</div>
<div class="rotate">Rotated</div>
<div class="rotate-translate">Rotated + Translated</div>
<div class="translate-rotate">Translated + Rotated</div>

CSS

css
div {
  position: absolute;
  left: 40px;
  top: 40px;
  width: 100px;
  height: 100px;
  background-color: lightgray;
}

.rotate {
  background-color: transparent;
  outline: 2px dashed;
  transform: rotate(45deg);
}

.rotate-translate {
  background-color: pink;
  transform: rotate(45deg) translateX(180px);
}

.translate-rotate {
  background-color: gold;
  transform: translateX(180px) rotate(45deg);
}

結果

規範

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

瀏覽器相容性

另見