flexbox的应用
2009年,display: box 就已经出现,但是直到IE11的发布,全部的主流浏览器才统一支持新的用法display: flex。
这里只说应用,浏览器的兼容处理会附在文章的末尾。
起步
在现代主流浏览器中,只需要给一个元素加上一行display: flex就可以让他拥有弹性布局的魔力。

轴的方向
flex-direction 定义了主轴的方向,在html中,默认值是 row,即子元素横向排列,但是在微信小程序中,默认值是 column(纵向排列)。
- 主轴与侧轴 
flex-direction: row时, 
.div1{display: flex; flex-direction: row}
.div1 > div // 从左到右排列
————————
口  口  口  口
.div2{display: flex; flex-direction: column}
.div2 > div // 从上到下排列
————————
口
口
口
口
flexbox默认是不会换行的,如果不想全部的子元素都挤在同一行,需要加上这样的属性
.div1{display: flex; flex-direction: row; flex-wrap: wrap}
.div1 > div // 从左到右排列,占满一行会换行
———————
口  口  口  口
口  口
.div2{display: flex; flex-direction: column; flex-wrap: wrap}
.div2 > div // 从上到下排列,占满一列会换行
——————————
| 口 口
| 口 口
| 口
| 口
对齐
justify-content 属性定义如何分配容器 主轴 上多个子元素之间的空间。
- 如果是 
flex-direction: column, 旋转屏幕90°看效果。

 
居中
居中使用align-items 属性,定义侧轴上的空间分配,大部分参数和 justify-content 相同(不能使用space-between和space-around)。把屏幕旋转90°就可以看到效果了。
使用剩余空间
flex 属性定义在子元素上,规定它如何使用剩余的空间。
.div1{width: 1000px}
.div1 > .div2{
    width: 300px;
}
.div1 > .div3{flex: 1} // div3宽度为700px
_______div1(1000px)_________
|__div3(700px)__|___div2___|
____________________________
flex布局的应用
上下定高,中间高度自适应
<!--css代码-->
html, body{height: 100%}
.page{display: flex; flex-direction: column}
.header{height: 44px}
.content{flex: 1}
.footer{height: 44px}
<!--结构-->
<html>
    <body>
        <main class='page'>
            <header class='header'></header>
            <div class='content'></div>
            <footer class='footer'></footer>
        </main>
    </body>
</html>
<!--page示意图-->
————————————
    .header(44px)
————————————
-
-
-
-
-
.content(视口高度减去88px)
-
-
-
-
-
————————————
     .footer(44px)
————————————
图文混排,图片定宽,文字自适应
<!--css代码-->
.card{width: 300px; display: flex}
.img{width: 100px}
.content{
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: space-around;
}
<!--结构-->
<div class='card'>
    <div class='img'></div>
    <div class='content'>
        <div class='title'></div>
        <div class='tag'></div>
        <div class='footer'></div>
    </div>
</div>

子元素水平、垂直居中
<!--css代码-->
.div{width: 300px; height: 300px;display: flex}
.div1{margin: auto}
<!--结构-->
<div class='div'>
    <div class='div1'></div>
</div>

flex兼容性处理
以下设置可以兼容大部分主流浏览器,比如IE10,android4,ios5
部分css代码来自白色橡树博客,原地址找不到,在此表示感谢
- 定义为flexbox
 
.flex{
    display:-webkit-box;
    display:-webkit-flex;
    display:-ms-flexbox;
    display:flex;
}
- 定义为纵轴排列
 
.flex-v{
    -webkit-box-orient:vertical;
    -webkit-flex-direction:column;
    -ms-flex-direction:column;
    flex-direction:column;
}
- 子元素垂直居中
 
.align-center{
    -webkit-box-align:center;
    -webkit-align-items:center;
    -ms-flex-align:center;
    align-items:center;
}
- 子元素两端对齐
 
.pack-justify{
    -webkit-box-pack:justify;
    -webkit-justify-content:space-between;
    -ms-flex-pack:justify;
    justify-content:space-between;
}
												
											flexbox的应用的更多相关文章
- Flexbox 自由的布局
		
css3提出了一种新的布局方式.她并没有以摧枯拉朽之势博得我的喜爱.我和她的故事总是伴随着苦涩的味道.世道变了,总要做出些选择才能跟紧步伐.她很强大,能满足你天马行空的需求而不必抓掉一大把头发.她却很 ...
 - CSS3 Flexbox轻松实现元素的水平居中和垂直居中
		
CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...
 - React Native FlexBox
		
FlexBox 是React Native布局的一种算法,目的是为了适配不同尺寸的屏幕而设计的. 使用时最关键的就是flex关键字的用法. flex用于修饰当前View在父视图中的占比. 占比如何计算 ...
 - flexbox布局神器
		
前言 2009年,W3C提出了一种新的方案----Flexbox布局(弹性布局),可以简便.完整.响应式地实现各种页面布局.Flex布局模型不同于块和内联模型布局,块和内联模型的布局计算依赖于块和内联 ...
 - [译]flexbox全揭秘
		
原文:http://css-tricks.com/snippets/css/a-guide-to-flexbox/ 弹性布局(弹性盒子,现今仍是w3c的候选推荐),目标在于,对于一个容器中的各个项目块 ...
 - (转)详解css3弹性盒模型(Flexbox)
		
今天刚学了css3的弹性盒模型,这是一个可以让你告别浮动.完美实现垂直水平居中的新特性. Flexbox是布局模块,而不是一个简单的属性,它包含父元素和子元素的属性. Flexbox布局的主体思想是似 ...
 - CSS3 Flexbox不迷路指南
		
Flexbox早有耳闻,但是决定切实尝试一番,还是因为看了这条围脖: 我觉得用flexbox可以实现,但是发觉无从下手,属性特性都不了解.趁此机会,学习下. 英文原版参考资料在这里:A Complet ...
 - 【前端攻略】最全面的水平垂直居中方案与flexbox布局
		
最近又遇到许多垂直居中的问题,这是Css布局当中十分常见的一个问题,诸如定长定宽或不定长宽的各类容器的垂直居中,其实都有很多种解决方案.而且在Css3的flexbox出现之后,解决各类居中问题变得更加 ...
 - 移动端全兼容的flexbox速成班
		
说起flexbox,都算是件陈年旧事了,它是2009年W3C提出的一种全新的可伸缩的CSS布局方式.依赖flexbox,我们可以更简单,高效的完成可伸缩式页面的布局. 业界与flexbox的相关教程文 ...
 - CSS3中flexbox如何实现水平垂直居中和三列等高布局
		
最近这些天都在弥补css以及css3的基础知识,在打开网页的时候,发现了火狐默认首页上有这样一个东西.
 
随机推荐
- [转]墨卡托投影坐标系(Mercator Projection)原理及实现C代码
			
墨卡托投影是一种“等角正切圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定:假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体 ...
 - Dubbo实践(二)架构
			
架构 节点角色说明 节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和 ...
 - 如何转换Xcode里打印的unicode编码日志
			
转换Xcode里打印的unicode编码日志 1)打开Terminal 2)输入python 3)print(u'\u6027\u611f\u597d\u83b1\u575e\u5973\u661f\ ...
 - Gradle Goodness: Add Incremental Build Support to Tasks
			
Gradle has a very powerful incremental build feature. This means Gradle will not execute a task unle ...
 - 更换php工具箱出现问题 CI框架的问题 【问题解决】
			
2018/10/08 09:56:47 [error] 8472#8588: *1 FastCGI sent in stderr: "PHP Warning: Unknown: open_ ...
 - 【Javascript-基础-getOwnPropertyNames】Object.getOwnPropertyNames() 获取对象自身可枚举属性
			
可枚举属性和不可枚举属性 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for-in查找遍历到. 可枚举属性 e ...
 - javascript对象定义及创建
			
javascript对象 定义 javascript中的对象,可以理解成是一个键值对的集合,键是调用每个值的名称,值可以是基本变量,还可以是函数和对象. 创建方法 第一种方法 通过顶级Object类来 ...
 - Web前端表单验证
			
表单选择器 :input(匹配所有input.textarea.select和button元素) :text(匹配所有单行文本框) :password(匹配所有密码框) :radio(匹配 ...
 - 智能家居系统 Home Assistant 系列 --介绍篇
			
一. HomeAssistant 是什么? HomeAssistant是构建智慧空间的神器.是一个成熟完整的基于 Python 的智能家居系统,设备支持度高,支持自动化(Automation).群组化 ...
 - Hive HQL基本操作
			
一. DDL操作 (数据定义语言) 具体参见:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 其实就是我们在创建 ...