关于前端3d透视的问题

为什么perspective是写在父盒子上的,而不是写在当前盒子上

该回答内容部分引用GPT,GPT_Pro更好的解决问题
CSS3的3D透视,要通过设置父盒子的perspective属性来实现,而不是当前盒子上。这是因为,当一个元素被设置为3D空间时,该元素所有的子元素都会被投影到3D空间中,受到父元素的perspective属性的影响。

一般来说,perspective属性可以定义一个“视角”,但是它本身并不会产生3D效果。一般情况下,perspective属性的值必须大于零,如果小于零,那么就不会有3D效果。

例如:

.parent {
    perspective: 500px;
}
.child {
    transform: rotateY(45deg);
}

上面的代码中,.parent元素设置了perspective属性,并将其值设置为500px;而.child元素则使用transform来定义旋转Y轴45度。这样一来,.child元素就会在.parent元素的3D空间中旋转45度。这就是为什么perspective要写在父盒子上而不是当前盒子上的原因。

此外,perspective属性还可以用来定义3D透视的深度,也就是物体在3D空间中的深度。perspective属性的值越大,物体在3D空间中的深度就会变得更大,也就是3D透视效果会更强烈。如果perspective属性的值太小,那么物体在3D空间中的深度也会变得很浅,从而导致透视效果很弱。
如果回答有帮助,望采纳。

该回答引用ChatGPT

在CSS中,perspective属性是用来设置3D场景的观察者与元素之间的距离,从而产生3D效果。perspective属性可以应用于父元素上,也可以应用于子元素上,但它们的效果是不同的。

当perspective属性应用于父元素时,它会影响所有子元素。这意味着所有子元素都会共享同一个透视点,从而形成统一的3D效果。在这种情况下,子元素需要使用CSS 3D变换属性(如rotateX、rotateY等)来实现3D效果。

而当perspective属性应用于子元素时,每个子元素都有自己的透视点,从而形成独立的3D效果。在这种情况下,子元素可以使用CSS 3D变换属性来实现自己的3D效果。

因此,perspective属性应用于父元素和子元素上的效果是不同的,应根据需要选择适当的方式。如果要在整个3D场景中实现一致的3D效果,可以将perspective属性应用于父元素;如果需要对每个元素进行个性化的3D处理,可以将perspective属性应用于子元素。