html3d上下翻转4面效果,纯CSS 3D翻转一个面(翻转导航菜单 立方体)

在做练习的时候学到css的翻转导航菜单,原代码有点让人头疼,通过对其css的参数一点点研究了其实现过程。

这里推荐大家研究这个3D翻转动画的代码。

首先要知道坐标系的设定如下:

df3ecee67b2ed065641e23e1807432e5.png

其次翻转关键的参数有:

perspective:  200px;

transform-style: preserve-3d;

transform: rotateX(90deg);

transform: translateZ(30px);

transition: all 1s linear;

1.设置透视属性,观察者位置在视图前200px;

2.设置是3D空间的变换效果,子元素合在一起变换;

3.设置旋转,沿X轴旋转90度,平面旋转后看到的是线;

4.设置位移,沿Z轴位移30px。

5.设置变换函数。

为了先初步了解,我先做一个导航图正面的翻转效果。

c4c9df971fb5b57f69827f2367e1dee3.gif

效果同立方体的翻转,正面翻转到顶面。立方体只旋转不位移,但是立方体的正面是发生位移的。

正面的变换原点在中心点,相对变换前的位置,变换后的位置向上位移50% 向后位移50%。

但是!css动画结束参数是根据这个面结束时的坐标的,这时候坐标系跟着变了,最后的结果是Z轴+50% Y轴-50%。

初始参数参考坐标如图一,不是根据变换后坐标写。

下图是三个参数的效果。

786555502eb9a55c27234a9989417dfc.gif

父元素设置 :

perspective: [para]px;

变换子元素设置:

transform: rotateX(90deg) translateZ(50px) translateY(-50px);

transition: all 1s linear;

通过上面的例子,我就明白了啥是3D变换了。但是这个例子是单个面,而设置一个3D立体的变换怎么设呢?当然不能对每个面进行定位,太麻烦,要整体变换。

1.设置多个面的原始旋转和位移,组成一个立方体。

2.立方体盒子元素设置:transform-style: preserve-3d;

3.立方体父元素设置景深:perspective: [para]px;

4.立方体盒子元素设置变换原点:transform-origin: 50% 50% -50px;

如果不设置变换原点,修正变换后位移也行。

5.对立方体盒子元素进行整体旋转。方体盒子元素沿X轴旋转90度即可。

效果如下,第二个图是设置了 opacity: 0.5;

80a9d39f78114c4548db404b76b99fab.gif 

64e95f70a80a9c477eaea1e0eab40d83.gif

另外下面做个错误的稀饭

在立方体元素上设置transform-style: preserve-3d; perspective:200px;

立方体上设置景深 perspective,立方体的图形就被固定了,或者说观察位置随立方体改变。需要从上一级元素观察才行。

↓在立方体元素上同时设置transform-style: preserve-3d; perspective

a0928d9b584a2607db270d16caea04fd.gif

↓没有设置perspective;

5e55fd215eb7c973da1472488e21f398.gif

↓ 没有设置transform-style: preserve-3d

61def8a3456c178397b0158b64a06b16.gif

over

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值