重温了一下当初学习前端时做的一个案例————旋转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效果实现的原理。