Flex布局实现圣杯布局,左右两列固定、中间列自适应的三列式布局
2016-04-08 17:38
836 查看
一、Flex主要解决两个问题:
1、元素位置:由6个容器属性和2个项目属性控制6个容器属性
flex-direction flex-wrap flex-flow justify-content align-items align-content
2个项目属性
order align-self
2、元素尺寸或自适应能力:由4个项目属性控制
4个项目属性(也可以说是3个,因flex是flex-grow、flex-shrink、flex-basis的集合,后两个可选)
flex-grow flex-shrink flex-basis flex
关于上述这些属性的介绍和使用,请查看前面的文章Flex布局教程:语法篇。
二、使用flex实现圣杯布局
圣杯布局格式要求:页面从上到下为头部、中部、脚部;头部、脚部定高,不可伸缩;中部高度自适应。
中部三列式布局:左右两列定宽,不可伸缩;中间内容区自适应。
完整代码及代码分析如下:
CSS代码:
<style type="text/css"> *{ box-sizing:content-box;/* 伸缩项目自动box-sizing:border-box,所以需调整为content-box */ margin:0; padding:0; } body{ display:flex; flex-direction:column;/* 头、中部、脚纵向显示 */ } header,footer{ flex:0 0 50px;/* 头、脚尺寸固定,不放大、不缩小 */ background:#3f3f3f; } .main{ display:flex; /* flex:1 == 1 1 auto:剩余空间放大比例(flex-grow) 空间不足缩小比例(flex-shrink) 分配多余空间之前项目占据的主轴空间(flex-basis) flex:1指的是:中部区域自由伸缩 auto指的是项目本来大小,因未给main设置高度,main高度由子元素最高者决定,若子元素高度为0,则main高度为0 块级元素未主动设置高度或未被子元素撑起高度,浏览器默认为块级元素分配高度为0。 */ flex:1; } .content{ background:red; height:1000px; /* 横向中间内容区自适应,即使未指定宽度,但会分配宽度 块级元素未主动设置宽度或未被子元素撑起宽度,浏览器默认为块级元素分配宽度为可使用的全部宽度,比如全屏宽。 */ flex:1; } .left,.right{ height:800px; background:blue; flex:0 0 100px;/* 左右两列固定宽 */ } .left{ order:-1;/* 让left居于左侧 */ } </style>
HTML代码:
<body> <header></header> <div class="main"> <div class="content"></div> <div class="left"></div> <div class="right"></div> </div> <footer></footer> </body>
相关文章推荐
- HBase高级配置跟调整(1)
- Struts2学习笔记
- 100个高质量Java开发者博客
- 汉堡
- 机器学习 -- 基本数学概念总结
- 学习笔记之曾经迷惑于输入输出
- 算法 —— URL短地址压缩算法
- 自己拿傅里叶变换公式实现2维傅里叶变换
- 一维数组和二位数组作为函数参数进行传递的方式
- 程序人生 重新出发-勇敢迈入程序猿的世界
- echarts3写法
- 【UFLDL-exercise1-Sparse Autoencoder】
- 基于spark mllib的LDA模型训练Scala代码实现
- python生成函数
- 自定义控件(三)--弧线展示图与音频条形图
- 获取手机内置存储和外挂sdcard存储路径和可用空间以及总空间大小的方式
- 2782: [HNOI2006]最短母串
- 学习笔记之线程同步的函数
- easyui 添加不重复的tab选项卡
- iOS 去掉导航栏最下面线的方法