transform

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 2015 年 9 月以來,該特性已在各大瀏覽器中可用。

transform CSS 屬性允許你旋轉、縮放、傾斜或平移元素。它修改了 CSS 視覺格式化模型的座標空間。

試一試

transform: matrix(1, 2, 3, 4, 5, 6);
transform: translate(120px, 50%);
transform: scale(2, 0.5);
transform: rotate(0.5turn);
transform: skew(30deg, 20deg);
transform: scale(0.5) translate(-100%, -100%);
<section id="default-example">
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>

如果該屬性的值不同於 none,則會建立一個堆疊上下文。在這種情況下,該元素將充當其包含的任何 position: fixed;position: absolute; 元素的包含塊

警告:只有可轉換元素才能被 transform。也就是說,除了非替換行內盒表列盒表列組盒之外,所有其佈局由 CSS 盒模型控制的元素。

語法

css
/* Keyword values */
transform: none;

/* Function values */
transform: matrix(1, 2, 3, 4, 5, 6);
transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);
transform: perspective(17px);
transform: rotate(0.5turn);
transform: rotate3d(1, 2, 3, 10deg);
transform: rotateX(10deg);
transform: rotateY(10deg);
transform: rotateZ(10deg);
transform: translate(12px, 50%);
transform: translate3d(12px, 50%, 3em);
transform: translateX(2em);
transform: translateY(3in);
transform: translateZ(2px);
transform: scale(2, 0.5);
transform: scale3d(2.5, 1.2, 0.3);
transform: scaleX(2);
transform: scaleY(0.5);
transform: scaleZ(0.3);
transform: skew(30deg, 20deg);
transform: skewX(30deg);
transform: skewY(1.07rad);

/* Multiple function values */
transform: translateX(10px) rotate(10deg) translateY(5px);
transform: perspective(500px) translate3d(10px, 0, 20px) rotateY(30deg);

/* Global values */
transform: inherit;
transform: initial;
transform: revert;
transform: revert-layer;
transform: unset;

transform 屬性可以指定為關鍵詞值 none 或一個或多個 <transform-function> 值。

<transform-function>

一個或多個要應用的 CSS 變換函式。變換函式按從左到右的順序相乘,這意味著複合變換實際上是按從右到左的順序應用的。

none

指定不應應用任何變換。

無障礙

縮放/縮放動畫對可訪問性來說是個問題,因為它們是某些型別偏頭痛的常見觸發因素。如果你的網站需要包含此類動畫,你應該提供一個控制元件,允許使用者關閉動畫,最好是全站範圍的。

此外,請考慮使用 prefers-reduced-motion 媒體特性——使用它來編寫一個媒體查詢,如果使用者在系統偏好設定中指定了減少動畫,則該查詢將關閉動畫。

瞭解更多

正式定義

初始值none
應用於可變換元素
繼承性
百分比指邊框的尺寸
計算值按指定值,但相對長度會轉換為絕對長度。
動畫型別變換
建立層疊上下文

正式語法

transform = 
none |
<transform-list>

<transform-list> =
<transform-function>+

示例

平移和旋轉元素

HTML

html
<div>Transformed element</div>

CSS

css
div {
  border: solid red;
  transform: translate(30px, 20px) rotate(20deg);
  width: 140px;
  height: 60px;
}

結果

變換順序

變換函式的順序很重要。在此示例中,兩個盒子以相同的值進行旋轉和平移;不同之處僅在於變換函式的順序。

HTML

html
<div class="original"></div>
<div class="one">1</div>
<div class="two">2</div>

CSS

css
.one {
  transform: translateX(200px) rotate(135deg);
}
.two {
  transform: rotate(135deg) translateX(200px);
}

結果

當元素在平移之前被旋轉時,平移方向在旋轉軸上。軸由虛線表示。

更多示例

請參閱 使用 CSS 變換<transform-function> 獲取更多示例。

規範

規範
CSS 變換模組級別 2
# 變換函式
CSS 變換模組級別 1
# 變換屬性
Scalable Vector Graphics (SVG) 2
# 變換屬性

瀏覽器相容性

另見