CSS3的Flexbox布局的简明入门指南


Posted in HTML / CSS onApril 08, 2016

Flexbox布局概念

Flexbox布局( Flexible Box 或CSS3 弹性布局),是CSS3中的一种新的布局模式,是可以自动调整子元素的高和宽,来很好的填充任何不同屏幕大小的显示设备中的可用显示空间,收缩内容防止内容溢出,确保元素拥有恰当的行为的布局方式。使用Flexbox来布局更容易,可以使用更少的代码,更简单的方式实现更复杂的布局,例如对齐方式,排列方向,排列顺序(这也是Flexbox布局的核心能力所在),弹性盒中的子元素通过在各个方向放置就可以以弹性的尺寸适应父元素的显示区域。由于子元素的显示顺序和它们在代码中 的顺序是独立的,通过使用弹性盒,定位子元素变得更加简单,复杂的布局也能够使用更清晰的代码更简单的实现。独立显示被设定成只针对可见元素,而不是基于代码的声明和导航顺序。

不同于块级元素基于垂直方向布局以及行内元素基于水平方向布局,弹性盒布局的算法是方向无关的。 虽然块级元素布局在页面中工作良好,但是其定义不足以支持那种需要根据用户代理从竖直切换成水平等变化而进行方向切换、大小调整、拉伸、收缩的引用组件。不同于将要出现的网格布局针对目标为大比例布局,弹性盒布局更适用于应用组件和小比例布局。这两种都是CSS工作组为了能与不同用户代理、不同书写模式和其他弹性需要进行协作而做出的努力。

名词与基础

Flexbox是一个完整的布局模块,不是单一的属性,设计的属性有很多。Flexbox布局主要由父容器和它的直接子元素组成,其中父容器被称之为flex container(flex容器),而其直接的子元素称作为flex item(flex元素)。

Flexbox布局按照宽和高涉及的基本概念名称有main axis(主轴)和cross axis(交叉轴,和主轴垂直),主轴起点边称为main start,主轴终点边称为main end,交叉轴起点边称为cross start,交叉轴终点边称为cross end。如图:
CSS3的Flexbox布局的简明入门指南

main axis(主轴):Flex容器的主轴主要用来排列Flex元素。它不一定是水平,这主要取决于flex-direction属性。
main-start(主轴起点边) | main-end(主轴终点边):Flex元素的排列从容器的主轴起点边开始,往主轴终点边结束。
main size:Flex元素的在主轴方向的宽度或高度就是项目的主轴长度,Flex元素的主轴长度属性是width或height属性,由哪一个对着主轴方向决定。
cross axis(和主轴垂直交叉的轴):与主轴垂直的轴称作交叉轴。
cross-start(交叉轴起点边) | cross-end(交叉轴终点边):伸缩行的排列从容器的交叉轴起点边开始,往交叉轴终点边结束。
cross size:Flex元素的在交叉轴方向的宽度或高度就是项目的交叉轴长度,Flex元素的交叉轴长度属性是width或height属性,由哪一个对着交叉轴方向决定。

例子

新的 flexbox 布局模式被用来重新定义CSS中的布局方式。很遗憾的是最近规范变动过多,导致各个浏览器对它的实现也有所不同。不过我仍旧想要分享一些例子,来让你知道即将发生的改变。这些例子目前只能在支持 flexbox 的 Chrome 浏览器中运行,基于最新的标准。
使用flexbox你还可以做的更多;这里只是一些让你了解概念的例子:

使用 Flexbox 的简单布局

CSS Code复制内容到剪贴板
  1. .container {   
  2.   display: -webkit-flex;   
  3.   display: flex;   
  4. }   
  5. nav {   
  6.   width200px;   
  7. }   
  8. .flex-column {   
  9.   -webkit-flex: 1;   
  10.           flex: 1;   
  11. }  

CSS3的Flexbox布局的简明入门指南

使用 Flexbox 的牛逼布局

CSS Code复制内容到剪贴板
  1. .container {   
  2.   display: -webkit-flex;   
  3.   display: flex;   
  4. }   
  5. .initial {   
  6.   -webkit-flex: initial;   
  7.           flex: initial;   
  8.   width200px;   
  9.   min-width100px;   
  10. }   
  11. .none {   
  12.   -webkit-flex: none;   
  13.           flex: none;   
  14.   width200px;   
  15. }   
  16. .flex1 {   
  17.   -webkit-flex: 1;   
  18.           flex: 1;   
  19. }   
  20. .flex2 {   
  21.   -webkit-flex: 2;   
  22.           flex: 2;   
  23. }  

CSS3的Flexbox布局的简明入门指南

HTML / CSS 相关文章推荐
css3简单练习实现遨游浏览器logo的绘制
Jan 30 HTML / CSS
css3设置box-pack和box-align让div里面的元素垂直居中
Sep 01 HTML / CSS
CSS3实现千变万化的文字阴影text-shadow效果设计
Apr 26 HTML / CSS
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
Nov 21 HTML / CSS
css3加js做一个简单的3D行星运转效果实例代码
Jan 18 HTML / CSS
html5播放视频且动态截图实现步骤与代码(支持safari其他未测试)
Jan 06 HTML / CSS
html5 canvas实现圆形时钟代码分享
Dec 25 HTML / CSS
HTML5学习笔记之html5与传统html区别
Jan 06 HTML / CSS
canvas进阶之如何画出平滑的曲线
Oct 15 HTML / CSS
HTML5自定义mp3播放器源码
Jan 06 HTML / CSS
Html5通过数据流方式播放视频的实现
Apr 27 HTML / CSS
html,css,javascript是怎样变成页面的
May 07 HTML / CSS
使用CSS3设计地图上的雷达定位提示效果
Apr 05 #HTML / CSS
简单掌握CSS3中resize属性的用法
Apr 01 #HTML / CSS
CSS3制作炫酷的自定义发光文字
Mar 28 #HTML / CSS
可自定义箭头样式的CSS3气泡提示框
Mar 16 #HTML / CSS
6种非常炫酷的CSS3按钮边框动画特效
Mar 16 #HTML / CSS
CSS3制作炫酷带方向感应的鼠标滑过图片3D动画
Mar 16 #HTML / CSS
纯CSS3实现8组超炫酷鼠标滑过图片动画
Mar 16 #HTML / CSS
You might like
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
简单的php写入数据库类代码分享
2011/07/26 PHP
农历与西历对照
2006/09/06 Javascript
用js实现判断当前网址的来路如果不是指定的来路就跳转到指定页面
2011/05/02 Javascript
最新28个很棒的jQuery 教程
2011/05/28 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
javascript 利用Image对象实现的埋点(某处的点击数)统计
2012/12/28 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
js用Date对象的setDate()函数对日期进行加减操作
2014/09/18 Javascript
判断访客终端类型集锦
2015/06/05 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
纯js的右下角弹窗实例
2017/03/12 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
React-Native中props具体使用详解
2017/09/04 Javascript
jQuery中的类名选择器(.class)用法简单示例
2018/05/14 jQuery
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
python爬虫的工作原理
2017/03/05 Python
Django RBAC权限管理设计过程详解
2019/08/06 Python
一行python实现树形结构的方法
2019/08/09 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
Python基于os.environ从windows获取环境变量
2020/06/09 Python
在keras里实现自定义上采样层
2020/06/28 Python
百联网上商城:i百联
2017/01/28 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
进程的查看和调度分别使用什么命令
2013/12/14 面试题
12.4法制宣传日活动总结
2014/08/26 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
公司的力量观后感
2015/06/05 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
Win11 Build 22000.51版本文件资源管理器“命令栏”和上下文菜单有什么新变化?
2021/11/21 数码科技
python对文档中元素删除,替换操作
2022/04/02 Python
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
教你win10系统中APPCRASH事件问题解决方法
2022/07/15 数码科技