transform-box

Baseline 廣泛可用 *

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

* 此特性的某些部分可能存在不同級別的支援。

transform-box CSS 屬性定義了 transform、單獨的 transform 屬性 translatescalerotate 以及 transform-origin 屬性所關聯的佈局框。

語法

css
/* Keyword values */
transform-box: content-box;
transform-box: border-box;
transform-box: fill-box;
transform-box: stroke-box;
transform-box: view-box;

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

transform-box 屬性使用下面列出的關鍵字值之一指定。

content-box

內容框用作參考框。<table> 的參考框是其表格包裝框的邊框,而不是其表格框。

border-box

邊框用作參考框。<table> 的參考框是其表格包裝框的邊框,而不是其表格框。

fill-box

物件邊界框用作參考框。對於具有關聯 CSS 佈局框的元素,其行為類似於 content-box

stroke-box

描邊邊界框用作參考框。對於具有關聯 CSS 佈局框的元素,其行為類似於 border-box

view-box

最近的 SVG 視口用作參考框。如果 SVG 視口建立元素指定了 viewBox 屬性,則參考框位於 viewBox 屬性建立的座標系原點處,並且參考框的尺寸設定為 viewBox 屬性的寬度和高度值。對於具有關聯 CSS 佈局框的元素,其行為類似於 border-box

正式定義

初始值view-box
應用於可變換元素
繼承性
計算值同指定值
動畫型別離散

正式語法

transform-box = 
content-box |
border-box |
fill-box |
stroke-box |
view-box

示例

SVG transform-origin 作用域

在此示例中,我們有一個 SVG

html
<svg id="svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50">
  <g>
    <circle id="center" fill="red" r="1" transform="translate(25 25)" />
    <circle id="boxcenter" fill="blue" r=".5" transform="translate(15 15)" />
    <rect
      id="box"
      x="10"
      y="10"
      width="10"
      height="10"
      rx="1"
      ry="1"
      stroke="black"
      fill="none" />
  </g>
</svg>

在 CSS 中,我們有一個使用 transform 無限旋轉矩形的動畫。transform-box: fill-box 用於使 transform-origin 成為邊界框的中心,因此矩形會原地旋轉。如果沒有它,transform origin 將是 SVG 畫布的中心,因此您會得到截然不同的效果。

css
svg {
  width: 80vh;
  border: 1px solid #d9d9d9;
  position: absolute;
  margin: auto;
  inset: 0;
}

#box {
  transform-origin: 50% 50%; /* anything other than `0 0` to see the effect */
  transform-box: fill-box;
  animation: rotate-box 3s linear infinite;
}

@keyframes rotate-box {
  to {
    transform: rotate(360deg);
  }
}

規範

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

瀏覽器相容性

另見