css - 为什么 "transform"属性被分组?

标签 css css-transforms

将本身就是键值对的属性组合在一起似乎有点违反直觉。特别是因为它们中的大多数都非常不同并且只要您知道如何编写它们仍然可以同时使用。如果不清楚我在说什么,我的问题是这个。为什么会这样:

transform: rotate(40deg) scaleX(1,5) translate(-10px, 20px);

不是这样写的:

rotation: 40deg;
scaleX: 1.5;
translate: -10px 20px;

这样每个属性都可以自己操作,而不必跟踪同级值。 W3 选择这种方法一定有充分的理由,所以有人知道吗?

最佳答案

那是因为转换不可交换。因此,顺序很重要。

例如,如果您在旋转后使用平移,则平移方向也会旋转。

.first::after {
  transform: rotate(180deg) translateX(50px);
}
.second::after {
  transform: translateX(50px) rotate(180deg);
}

enter image description here

body {
  display: flex;
  flex-direction: space-around;
}
div {
  height: 100px;
  width: 100px;
  border: 5px solid;
  margin: 25px auto;
}
div::after {
  content: 'Hello';
  display: block;
  height: 100%;
  width: 100%;
  background: yellow;
  opacity: .5;
}
.first::after {
  transform: rotate(180deg) translateX(50px);
}
.second::after {
  transform: translateX(50px) rotate(180deg);
}
<div class="first"></div>
<div class="second"></div>

对于不同的 CSS 属性,您无法选择您想要的顺序。这是 CSS Transforms level 2 的限制那BoltClock mentioned , 规范 defines an order你无法改变它。

关于css - 为什么 "transform"属性被分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36553915/

相关文章:

javascript - 如何在响应菜单上的导航链接悬停时设置下划线?

html - 网站意外溢出

html - 如何在比例动画中将原点保持在图像的中心?

html - 使用 CSS 缩放整个 HTML 元素

jquery - 如何做 $ ("#side1").css ("transform","translateX(-100px) scale(1)") 使用 jquery animate?

css - 在 Less 中组合多个 "transform"条目

css - Woocommerce 添加到购物车按钮跳转

css - 在 react js中改变 map 函数内框的宽度

html - 在具有转换属性的 div 中时,div 无法滚动

css - 按比例缩小大图像不会更新主体尺寸