我对 transform-origin
属性的概念有些困惑,主要是它的用途。是否只在 2D 变换中的 rotate
中应用 transform-origin
属性呢?
我对 transform-origin
属性的概念有些困惑,主要是它的用途。是否只在 2D 变换中的 rotate
中应用 transform-origin
属性呢?
transform-origin
适用于线性转换。简单来说,transform-origin
适用于所有类型的变换,唯一的例外是平移变换,它是一个仿射变换。
任何类型的变换都可以使用类似下面的矩阵来表示:
matrix(a, b, c, d, tx, ty)
其中
a b c d
是描述线性变换的
<number>
。tx ty
是描述要应用的平移的
<number>
。ref
如果b、c与0不同或a、d与1不同,则transform-origin
将影响您的转换。 如果b、c等于0且a、d等于1,则transform-origin
将没有影响。
只有translate()
或恒等变换(倾斜(0),缩放(1),旋转(0)等)会在c、b中给出0,在a、d中给出1。
从规范中可以看到:
如果红色部分是恒等变换,则很可能是平移或什么也不是(如果e
和f
为0)。
示例来说明使用翻译的情况:
.box {
width:100px;
height:100px;
display:inline-block;
margin:10px;
background:red;
transform:translate(10px,50px);
}
<div class="box" style="transform-origin:0 0"></div>
<div class="box" style="transform-origin:100% 0"></div>
<div class="box" style="transform-origin:50px 10px"></div>
<div class="box" style="transform-origin:9999px -9999px"></div>
transform-origin
的完整解释。
transform-origin
适用于2D和3D。https://www.w3schools.com/cssref/css3_pr_transform-origin.asp - mhhabibskew
和scale
。请参阅文档中的示例。 - Sebastian Simon