【发布时间】:2019-01-24 06:09:46
【问题描述】:
我发现transform 属性取决于perspective() 位置
为什么会这样? transform 的任何其他规则/限制?
虽然我觉得很奇怪,但这似乎不是一个错误,因为我能够在 Chrome/FF 中重现它
box:nth-child(1):hover {
transform: perspective(1000px) translate3d(0, 0, -100px);
}
box:nth-child(2):hover {
transform: translate3d(0, 0, 100px) perspective(1000px);
}
box {
padding: 20px;
display: inline-flex;
align-items: center;
justify-content: center;
font-family: monospace;
transition: transform .4s;
background: rgba(255, 0, 0, 0.3);
margin: 20px;
font-size: 12px;
perspective: 1000px;
cursor: pointer;
}
box:nth-child(2) {
background: rgba(0, 0, 255, 0.3);
}
<box>
transform: perspective(1000px) translate3d(0,0,100px);
</box>
<box>
transform: translate3d(0,0,100px) perspective(1000px);
</box>
【问题讨论】:
-
浏览器通常没有 z 维信息(为什么需要?)。一旦不告诉浏览器元素的z位置,怎么做3维平移?
-
@MatrixTai 了解一下 transform3d 你就会明白
-
@TemaniAfif ,我的意思是 OP 必须首先声明透视图,它初始化 3d 空间。这只是一个反问。
-
@godblessstrawberry 在这种情况下也很重要...颠倒顺序并且您希望获得相同的结果,仅在某些特定情况下您才有相同的结果
标签: css css-transforms