第一题
- 布局介绍
这个是经典的首页布局,垂直方向分为头,内容,尾
组成,内容又分为导航和展现,其中展现内容须要自适应,须要随着窗口的大小发生变化
- 剖析
垂直方向能够应用flex方向为column,因为两头内容项须要自适应,能够应用flex-grow指定增长自适应,内容外面又蕴含了导航和内容展现,其中内容展现是自适应,因而布局代码参考如下:
<div class="container"> <div class="head"></div> <div class="main"> <div class="nav"></div> <div class="content"></div> </div> <div class="footer"></div></div>
加上款式后
<html><head><style>.container{ width: 100%; height: 100%; display: flex; flex-direction: column;}.head{ height: 80px; background-color: green; margin: 5px;}.main{ flex-grow: 1; background-color: blue; margin: 5px;}.footer{ height:80px; background-color: purple; margin: 5px;}</style></head><body><div class="container"> <div class="head"></div> <div class="main"> <div class="nav"></div> <div class="content"></div> </div> <div class="footer"></div></div></body></html>
有了上中下三层,并且中间层依附flex-grow: 1
可能随着高度增长增长,上和下放弃高度不变,增加nav和content款式
<html><head><style>.container{ width: 100%; height: 100%; display: flex; flex-direction: column;}.head{ height: 80px; background-color: green; margin:5px;}.main{ flex-grow: 1; display: flex; flex-direction: row;}.nav{ width: 100px; background-color: yellow; margin:5px;}.content{ flex-grow: 1; background-color: blue; margin:5px;}.footer{ height:80px; background-color: purple; margin:5px;}</style></head><body><div class="container"> <div class="head"></div> <div class="main"> <div class="nav"></div> <div class="content"></div> </div> <div class="footer"></div></div></body></html>
中间层左边content会随着高度减少而减少
第二题
- 布局
- 实现
<html><head><style>.container{ width: 100%; height: 100%; display: flex; flex-direction: column;}.box{ width: 150px; background-color: orange; margin: 5px; flex-grow: 1;}</style></head><body><div class="container"> <div style="display: flex;flex-direction: row;flex-grow: 1;"> <div class="box"></div> <div class="box"></div> <div class="box"></div> </div> <div style="display: flex;flex-direction: row;flex-grow: 1"> <div style="display: flex;flex-direction: column;"> <div class="box"></div> <div class="box"></div> </div> <div style="margin:5px;background-color: orange;flex-grow: 1;"></div> </div></div></body></html>
所有元素都是响应式的