CSS3中perspective、perspective-origin、transform-style: preserve-3d和transform中的rotate详细解释、纯CSS3动画正方体贴图

目录

transform-style: preserve-3d

perspective

perspective-origin

rotate

translate

纯CSS3动画正方体贴图小项目链接和GIF图片


transform-style: preserve-3d

属性规定如何在 3D 空间中呈现被嵌套的元素,有flat和preserve-3d两种参数,默认为flat表示子元素将不保留3d位置(注意只有子元素会实现3d效果),preserve-3d相反(理解为设置后元素之间的覆盖关系将不会根据出生先后以及z-index等影响,而是通过立体几何的3d关系决定覆盖关系,且未设置时,旋转将会是只旋转覆盖关系的最后一个元素即只看见一个面的旋转)。

perspective

定义 3D 元素距视图的距离,以像素计。该属性允许改变 3D 元素查看 3D 元素的视图。当为元素定义 perspective 属性时,其子孙元素会获得透视效果,而不是元素本身,子孙元素重复时,以孙元素为主。指定了观察者与z=0平面的距离,使具有三维变换的元素产生透视效果(理解为眼睛距离浏览器屏幕的距离,在设置元素的中心向外,这里用一个别人的例子比如一个1680像素宽的显示器中有张美女图片,应用了3D transform,同时,该元素或该元素父辈元素设置的perspective大小为2000像素。则这张美女多呈现的3D效果就跟你本人在1.2个显示器宽度的地方(1680*1.2≈2000)看到的真实效果一致!,下图为设置父集perspective为1000px,子集有高600px的图片、translateZ为300px即z轴方向向外移动300px时,屏幕中图片显示为857.14的像素原因)。

perspective-origin

定义 3D 元素所基于的 X 轴和 Y 轴(需要搭配perspective使用,无法单独使用)。该属性允许改变 3D 元素的底部位置。当定义perspective -Origin属性时,会调整子孙元素的perspective而不是元素本身。实质上为元素变形的原点,默认值为 50% 50% ,该数值和后续提及的百分比默认均基于元素自身的宽高算出具体数值(在数值不是特别高的情况下即一般情况下,可以简单理解为眼睛位置的x、y方向定位,是以设置元素的左上角定点为0,0点,不设置时默认50%50%,即相当于眼睛在该元素中心点的z轴位置上,比如正对一个正方体,我们只能看得到它一个面时,当第一个参数大于50%+n时,我们就可以看见该正方体的右侧面,相当于眼睛向右侧移动了,当第二个参数大于50%+n时,我们就可以看见该正方体的底面,相当于眼睛向下侧移动了,按道理n应该为0.5但实际为0.5~0的一个值)。

rotate

如图我们首先要理解计算机的空间坐标系,它是以元素的中心(图中大的正方形可比作元素)建立x、y轴(和定位absolute中的x,y轴相同),z轴理解为从屏幕指向眼睛的方向传入度数值,表示绕X或Y或Z轴旋转,其中绕x轴旋转时,+Z向-Y方向为正方向,绕y轴旋转时,+z向+x方向为正方向,绕z轴旋转时,-Y向+X方向。注意设置时的无先后顺序,例如rotateX(30px) translateX(30deg)和translateX(30deg) rotateX(30px)是两个不同的位置,且选择的解释也不同,第一种的旋转是先translate后绕原先的X轴rotate,第二种是绕translate后绕自身的X轴旋转(原点也经过了translateX);然后子元素经过了translate后,其父元素的旋转绕的轴是原始的轴(不是自身的),即rotateX(30deg) rotateY(30deg)和rotateY(30deg) rotateX(30deg)可能表示一个位置,也可能表示不同位置,在于子元素是否该变了图形的位置。一定要注意,不然搞了贼久还以为其它的属性出了问题,写的时候最好就要注意好顺序,不同的写法顺序不同,rotateX(30deg)

translate

空间坐标系同上,也是分别表示向3个方向平移的像素,这里再次强调一下上面的重点:rotateX(30px) translateX(30deg)和translateX(30deg) rotateX(30px)是两个不同的位置,且旋转的解释也不同,第一种的旋转是先translate后绕原先的X轴rotate,第二种是先translate后绕自身的X轴旋转(原点也经过了translateX);然后子元素经过了translate后,其父元素的旋转绕的轴是原始的轴(不是自身的),即rotateX(30deg) rotateY(30deg)和rotateY(30deg) rotateX(30deg)可能表示一个位置,也可能表示不同位置,在于子元素是否该变了图形的位置。

纯CSS3动画正方体贴图小项目链接和GIF图片

每月两个小小项目——CSS3立体正方体贴图旋转动画_AIWWY的博客-CSDN博客

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: transform-style: preserve-3d; 是一个CSS3属性,用于定义一个元素的子元素是如何在三维空间呈现的。 当应用于一个元素时,它指示该元素的子元素应该在三维空间进行变换,而不是在二维平面变换。这意味着子元素可以在三维空间进行旋转、缩放和移动,而不受到其父元素的影响。 例如,如果一个元素有许多子元素,当应用 transform-style: preserve-3d; 后,这些子元素将会在三维空间摆放,这样它们可以以更自由的方式进行旋转和变形,而不会受到其父元素的影响。 需要注意的是,使用 transform-style: preserve-3d; 属性时,父元素必须具有透视属性(perspective),否则子元素将无法正确呈现在三维空间。 ### 回答2: transform-style: preserve-3d; 是一个CSS属性,用于控制3D变换元素内容的呈现方式。 当使用3D变换属性(如rotateX、rotateY等)来转换一个元素时,该元素的子元素也会被影响,它们可能会在3D空间随着父元素的变换发生改变。但是,默认情况下,子元素的变换发生在二维平面上,即使父元素发生了3D变换。 使用transform-style: preserve-3d; 可以改变子元素的变换方式,使其也在3D空间进行变换。这意味着子元素可以跟随父元素的旋转和变换,并在3D空间自由移动。 此属性对于制作3D效果的网页或动画非常有用。例如,在一个3D立方体,可以通过设置父元素的transform-style为preserve-3d,使得立方体内的内容也在3D空间进行变换,从而创造出更加生动逼真的效果。 需要注意的是,transform-style: preserve-3d; 只会应用在直接子元素上,对于孙元素或更深层次的元素,需要单独设置transform-style属性。 总之,通过使用transform-style: preserve-3d; 属性,可以在3D变换更好地控制元素的呈现方式,增强网页或动画的视觉效果。 ### 回答3: transform-style: preserve-3d; 是CSS属性,用于定义一个元素的子元素应如何在3D空间呈现。 当我们在 CSS 使用 3D 转换时,通常会在某个容器元素上使用 transform-style: preserve-3d; 属性。这样可以确保容器元素的子元素能够保持其在3D空间的位置和变换效果。 这个属性的默认值是 flat,即子元素在容器元素的平面内进行变换。而当我们将属性值设置为 preserve-3d 时,容器元素的子元素将以3D空间的形式进行变换,使得子元素可以具有在3D空间移动、旋转和缩放的效果。 这个属性在进行复杂的3D转换时非常有用。通过将容器元素的子元素设置为 preserve-3d,我们可以在子元素上应用各种3D转换,例如 translate3Drotate3D 和 scale3D 等。这样能够更加精确地控制子元素在3D空间的位置和变换效果。 总之,transform-style: preserve-3d; 是一个非常有用的CSS属性,当我们需要在页面创建3D效果时,可以使用它来确保容器元素的子元素能够正确地在3D空间进行变换。通过合理运用这个属性,我们可以创造出令人惊叹的3D动画和效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值