重温了一下当初学习前端时做的一个案例————旋转3D导航栏。
点击这里可查看案例。
想要实现这个效果需要一个立体3D的空间想象能力。因为我们需要一个立体的直角坐标系来讲述特效原理。
弹性盒模型
首先将基础的布局实现以下:居中的一个大的div:宽507px,高300px。里面左、右各两个div,左侧div:宽200px,高300px。右侧div:宽300px,高300px。
但是在普通流的布局中,一个块元素在父元素中是如何排列的?
- 从上往下排列
- 从左开始排列
- 一个块元素占一行
所以我们在此使用弹性盒模型display: flex;来进行左右div在父元素中并排布局。
对父元素使用弹性盒模型后:会在父元素内部生成一个横向的主轴,所有子元素都要沿着父元素的主轴排列
![]()
1 | |
1 | |
定位布局
左侧div中有着三个竖直排列的小div,右侧div应该有三个相等大小的三个div。
1 | |
1 | |
右侧div中的三个相等大小的div按照普通流的布局方式从上往下排列。在此,我们对三个div使用绝对定位position: absolute;,使它们脱离文档流。
这里有绝对定位的详细解释:
![]()
1 | |
之后,我们可以在父元素.content使用相对定位position: relative;。使用相对定位后,相当于在content上面建立了一个立体直角坐标系。
content1、content2、content3相对于父元素中的位置是左上角的位置,由此假设出横向轴为x轴,竖直方向为y轴,z轴则是我们平时页面时的垂直方向。
![]()
1 | |
下一篇会讲解一下3D效果实现的原理。