transform-origin

基线 广泛可用

此功能已得到很好的建立,并且可以在许多设备和浏览器版本上运行。它自以下时间起在浏览器中可用: 2015 年 9 月.

transform-origin CSS 属性设置元素变换的原点。

试一试

变换原点是应用变换的点。例如,rotate() 函数的变换原点是旋转中心。

实际上,此属性围绕元素的其他变换包装了一对平移。第一次平移将变换原点移动到真正的原点,位于 ( 0 , 0 ) 。然后应用其他变换,并且由于变换原点位于 ( 0 , 0 ) ,因此这些变换围绕变换原点进行。最后,应用相反的平移,将变换原点移回其原始位置。因此,此定义

css
transform-origin: -100% 50%;
transform: rotate(45deg);

产生的变换与以下变换相同:

css
transform-origin: 0 0;
transform: translate(-100%, 50%) rotate(45deg) translate(100%, -50%);

从右到左读取,translate(100%, -50%) 是将变换原点移到真正原点的平移,rotate(45deg) 是原始变换,而 translate(-100%, 50%) 是将变换原点恢复到其原始位置的平移。

默认情况下,变换的原点为 center

语法

css
/* One-value syntax */
transform-origin: 2px;
transform-origin: bottom;

/* x-offset | y-offset */
transform-origin: 3cm 2px;

/* x-offset-keyword | y-offset */
transform-origin: left 2px;

/* x-offset-keyword | y-offset-keyword */
transform-origin: right top;

/* y-offset-keyword | x-offset-keyword */
transform-origin: top right;

/* x-offset | y-offset | z-offset */
transform-origin: 2px 30% 10px;

/* x-offset-keyword | y-offset | z-offset */
transform-origin: left 5px -3px;

/* x-offset-keyword | y-offset-keyword | z-offset */
transform-origin: right bottom 2cm;

/* y-offset-keyword | x-offset-keyword | z-offset */
transform-origin: bottom right 2cm;

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

可以使用一个、两个或三个值指定 transform-origin 属性,其中每个值代表一个偏移量。未明确定义的偏移量将重置为其相应的初始值

如果定义了单个<length><percentage> 值,则它表示水平偏移量。

如果定义了两个或多个值,并且任何值都不是关键字,或者唯一使用的关键字是 center,则第一个值表示水平偏移量,第二个值表示垂直偏移量。

  • 单值语法
    • 该值必须是<length><percentage> 或以下关键字之一:leftcenterrighttopbottom
  • 双值语法
  • 三值语法
    • 前两个值与双值语法的相同。
    • 第三个值必须是<length>。它始终表示 Z 偏移量。

x-offset

<length><percentage>,描述变换原点距盒子左边缘的距离。

offset-keyword

是以下关键字之一:leftrighttopbottomcenter,描述相应的偏移量。

y-offset

<length><percentage>,描述变换原点距盒子顶边缘的距离。

x-offset-keyword

是以下关键字之一:leftrightcenter,描述变换原点距盒子左边缘的距离。

y-offset-keyword

topbottomcenter 关键字之一描述了变换原点距盒子顶部边缘的距离。

z 偏移量

是一个 <length>(绝不是 <percentage>,因为它会使语句无效),描述了 z=0 原点距用户眼睛的距离。

这些关键字是方便的简写,与以下 <percentage> 值匹配

关键字
left 0%
center 50%
right 100%
top

0%
bottom 100%

正式定义

初始值50% 50% 0
应用于可变换元素
继承
百分比指的是边界框的大小
计算值对于 <length>,为绝对值,否则为百分比
动画类型长度、百分比或 calc 的简单列表

注意:对于所有 SVG 元素,transform-origin 的初始值为 0 0,但根 <svg> 元素和作为 foreignObject 的直接子元素的 <svg> 元素除外,它们的 transform-origin50% 50%,与其他 CSS 元素相同。有关更多信息,请参阅 SVG transform-origin 属性。

正式语法

transform-origin = 
[ left | center | right | top | bottom | <length-percentage> ] |
[ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ] <length>? |
[ [ center | left | right ] && [ center | top | bottom ] ] <length>?

<length-percentage> =
<length> |
<percentage>

示例

各种变换值的演示

此示例显示了为各种变换函数选择不同的 transform-origin 值的效果。

规范

规范
CSS Transforms 模块级别 1
# transform-origin 属性

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅