Firefox 72 最早推出了“独立变换”。也就是说,无需像这样组合变换:
.el {
transform: translate(10px, 10px) scale(0.95) rotate(10deg);
}
…我们可以这样做
.el {
rotate: 10deg;
scale: 0.95;
translate: 10px 10px;
}
这非常有用,因为在更改单个变换时必须重复其他变换,否则将其删除,这既繁琐又容易出错。
但这里有一些细微差别需要了解,Dan Wilson 深入探讨了这一点。
需要了解的小细节
- 独立变换首先发生。
transform
属性最后发生,并叠加在已完成的操作之上,这可能会令人困惑¹。 - 它们都共享相同的
transform-origin
。 offset-*
属性也有效地移动/旋转元素。这些操作发生在独立变换之后以及transform
之前。
- Claus Colloseus 写信来修复这篇文章中的一些问题,并阐明这有多么令人困惑。例如,
rotate: 45deg; transform: rotate(-45deg);
将不会有任何效果,因为两者都会应用并有效地相互抵消。那么,translate: 50px 0; rotate: 45deg; transform: translate(-50px, 0) rotate(-45deg);
也应该全部抵消吗?不,由于顺序的原因,最终结果类似于translate(14.6447px, -35.3553px)
。