transform-box
Свойство transform-box CSS определяет область макета, к которой относятся свойства transform, отдельные свойства преобразования translate, scale, rotate и transform-origin.
Синтаксис
/* 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-origin для SVG
В этом примере у нас есть SVG:
<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-box: fill-box используется для того, чтобы сделать transform-origin центром прямоугольника, поэтому прямоугольник вращается на месте. Без него точка отсчёта преобразования — центр холста SVG, что даёт совершенно другой эффект.
svg {
width: 80vh;
border: 1px solid #d9d9d9;
position: absolute;
margin: auto;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
#box {
transform-origin: 50% 50%; /* anything other than `0 0` to see the effect */
transform-box: fill-box;
animation: rotateBox 3s linear infinite;
}
@keyframes rotateBox {
to {
transform: rotate(360deg);
}
}
Полное авторство этого примера принадлежит Pogany; см. данный CodePen для просмотра в живом режиме.
Спецификации
| Спецификация |
|---|
| CSS Transforms Module Level 1 # transform-box |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
transform-box |
64 | 79 | 55 | 51 | 11 | 64 | 55 | 47 | 11 | 9.0 | 64 |
border-box |
118 | 118 | 55 | 104 | 13.1 | 118 | 55 | 79 | 13.4 | 25.0 | 118 |
content-box |
118 | 118 | 125 | 104 | 13.1 | 118 | 125 | 79 | 13.4 | 25.0 | 118 |
fill-box |
64 | 79 | 55 | 51 | ≤13.1 | 64 | 55 | 47 | ≤13.4 | 9.0 | 64 |
stroke-box |
118 | 118 | 125 | 104 | 13.1 | 118 | 125 | 79 | 13.4 | 25.0 | 118 |
view-box |
64 | 79 | 55 | 51 | ≤13.1 | 64 | 55 | 47 | ≤13.4 | 9.0 | 64 |
См. также
- Использование CSS преобразований
-
transform,transform-origin - Отдельные свойства преобразований:
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/transform-box