CSS3 Flexbox不迷路指南
Flexbox早有耳闻,但是决定切实尝试一番,还是因为看了这条围脖:

我觉得用flexbox可以实现,但是发觉无从下手,属性特性都不了解。趁此机会,学习下。
英文原版参考资料在这里:A Complete Guide to Flexbox--CSS tricks
-----------------------------------------------------------------------------------------------------------------------------------------------------------
---->flex container的属性
---->flex item的属性
---->练习一:子元素的完美居中问题
---->练习二:不使用媒体查询多块元素根据分辨率自动排列
---->练习三:添加媒体查询,基本页面布局伸缩
上面demo要用现代浏览器打开,并且要记得不断改变浏览器窗口的大小,来查看效果。
flex container的属性

display:
首先,对于container应用下面代码,针对它的直接子元素创建一个flex的上下文。
.container {
display: flex; /* or inline-flex */
}
flex-direction:

它建立一个主轴,用来确定flex items在flex container中的放置方向。
.container {
flex-direction: row | row-reverse | column | column-reverse;
}
**row(default) :flex item从左向右排列(如果你定义了direction属性的话,这里会有影响);
**row-reverse : flex item从右向左排列;
**column : 跟row相同,但是是从上向下排列;
**column-reverse : 跟row-reverse相同,但是是从下向上排列;
flex-wrap:

默认的情况下,flex items会尝试在一行中显示,通过制定这个属性相关的值,你可以定义是否换行。direction属性的值 会影响到flex-wrap的值的作用。
.container{
flex-wrap: nowrap | wrap | wrap-reverse;
}
**nowrap:单行,flex item从左向右显示(direction:ltr);
**wrap: 多行,flex item从左向右显示;
**wrap-reverse:多行,flex item显示方向与direction定义的方向相反。
flex-flow:
flex-flow: <‘flex-direction’> || <‘flex-wrap’>
这个属性是flex-direction和flex-wrap属性的简写,默认值是 row nowrap。
justify-content:

它定义了相对主轴的对齐方式。它定义了水平方向上剩余空间的分配方式。
.container {
justify-content: flex-start | flex-end | center | space-between | space-around;
}
可以根据上面的示意图寻找合适的属性。
align-items:

这个属性定义flex item在十字轴(垂直于主轴)的当前行上的默认行为。
.container {
align-items: flex-start | flex-end | center | baseline | stretch;
}
align-content:

这个属性定义了在垂直方向上剩下的空间的分配方式。
.container {
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}
flex item的属性

order:

一般情况下,flex items会按照他们在文档中的顺序来排列。order属性可以控制他们在flex container中的显示顺序。
.item {
order: <integer>;
}
flex-grow:

给flex items设置flex-grow的数值可以让flex items根据数值比例自适应分配空间。就像上面图中一样的。(不要用负值)
.item {
flex-grow: <number>; /* default 0 */
}
flex-shrink:
这个属性定义flex items的伸缩能力。(不要用负值)
.item {
flex-shrink: <number>; /* default 1 */
}
flex-basis:
这个属性定义了在有剩余的空间可分布时一个元素的默认大小。
.item {
flex-basis: <length> | auto; /* default auto */
}
flex:
这个属性是 flex-grow, flex-shrink和flex-basis的缩写。默认值是 0 1 auto
.item {
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
align-self:

这个元素与flex items自己的对齐方式有关
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
了解了之后接着跟着练习写demo(源代码都放在github上面):
总结:
虽然它很强大,但是如果需要考虑浏览器的兼容性的话,可能就需要另寻它法了。这里是它的浏览器兼容性一览表:

关于最前面微博那道题目的解法,那个微博下面已经有贴了代码啦,贴过来看看:
http://ajccom.sinaapp.com/demo/test.html
http://codepen.io/airen/pen/PwoNrQ
上面两个代码都值得学习呢。
不过我觉得喔,第一个demo就符合要求了啦。
CSS3 Flexbox不迷路指南的更多相关文章
- 转载:CSS3 Flexbox可视化指南
0. 目录 目录 引言 正文 1 引入 2 基础 3 使用 4 弹性容器Flex container属性 41 flex-direction 42 flex-wrap 43 flex-flow 44 ...
- CSS3 Flexbox可视化指南
0. 目录 目录 引言 正文 1 引入 2 基础 3 使用 4 弹性容器Flex container属性 41 flex-direction 42 flex-wrap 43 flex-flow 44 ...
- CSS3 Flexbox轻松实现元素的水平居中和垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...
- 《CSS3专业网页开发指南》笔记
书本:<CSS3专业网页开发指南>(the book of css3) Peter Gasston 著 李景媛 吴晓嘉 译 第1章: 1.box-sizing : IE8及以上版本 ...
- 转:CSS3 Flexbox 布局介绍
转:CSS3 Flexbox 布局介绍 Flexbox是一个用于页面布局的全新CSS3模块功能.它可以把列表放在同一个方向(从左到右或从上到下排列),并且让这些列表能延伸到占用可用的空间.较为复杂的布 ...
- React Native Flexbox & CSS3 Flexbox
React Native Flexbox & CSS3 Flexbox https://facebook.github.io/react-native/docs/flexbox/ https: ...
- CSS3 Flexbox轻巧实现元素的水平居中和垂直居中
CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...
- CSS3 Flexbox轻巧实现元素的水平居中和垂直居中(转)
CSS3 Flexbox轻松实现元素的水平居中和垂直居中 网上有很多关于Flex的教程,对于Flex的叫法也不一,有的叫Flexbox,有的叫Flex,其实这两种叫法都没有错,只是Flexbox旧一点 ...
- CSS3 Flexbox(伸缩盒/弹性盒模型)可视化指南
在http://css.doyoe.com/(CSS参考手册)中,本文对应其中的伸缩盒 引入 Flexbox布局官方称为CSS Flexible Box Layout Module是一个CSS3新的布 ...
随机推荐
- ppmoney 总结一
1.JQ $.get() <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 前端js调用七牛制作评价页面案例
一.需求 公司所有的上传页面都用七牛,前端不免要直接调用七牛的代码进行上传,以下是一个实现七牛上传的案例,制作一个常见的商品评价页面,页面需求很常见当上传到第五章图片的时候,上传按钮消失,上传需要显示 ...
- web.xml文件加载顺序
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- 转:Delphi2010新发现-类的构造和析构函数功能
Delphi2010发布了. 虽然凭着对Delphi的热爱第一时间就安装了,但是现在可能是年纪大了,对新事物缺乏兴趣了.一直都没有仔细研究. 今天有点时间试了一下新功能. 本来C#和Delphi.NE ...
- DelphiXE10.1自定义控件添加图标方法
1 在资源文件中加入个24*24的BMP图片,命名为控件的类名(全大写包括T) 2 项目文件中加入对应的 {$R *.dres} 缺省为项目文件同名,自动加入到项目文件(Projrct- ...
- C#版 Winform界面 Socket编程 Client客户端
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- oracle 和c3p0 数据库的Time_Wait 过多问题的一个解决方案。
项目是B/S模式,放在linux服务器上,tomcat和oracle11g在一台服务器上,tomcat读取数据库采用C3P0连接池,一直比较稳定,所以也没有去管.后来把tomcat放在一台win200 ...
- React-native之持久化保存----AsyncStorage
AsyncStorage AsyncStorage是一个简单的,未加密的,异步的,持久化,关键值存储系统,是全局的. iOS中存储类似于NSUserDefault,存储问plist文件存放在设备中. ...
- 利用CORS实现跨域请求(转载)
跨域请求一直是网页编程中的一个难题,在过去,绝大多数人都倾向于使用JSONP来解决这一问题.不过现在,我们可以考虑一下W3C中一项新的特性--CORS(Cross-Origin Resource Sh ...
- C#SerialPort如何读取串口数据并显示在TextBox上
SerialPort中串口数据的读取与写入有较大的不同.由于串口不知道数据何时到达,因此有两种方法可以实现串口数据的读取.一.线程实时读串口:二.事件触发方式实现. 由于线程实时读串口的效率不是十分高 ...