“Flex-box”(全称:CSS Flexible Box Layout Module)是css3中新的布局方式。它可以实现弹性布局,尤其运用在响应式设计中,配合media query可以为布局带来很多新的可能。

Flex-box模型的核心在于内含item的尺寸是可以是弹性的。container可以根据本身尺寸的变化来动态地调整item的尺寸。当container有空白空间时,item可以扩展尺寸以占据额外的空间;当容器中的空间不足时,item可以缩小尺寸。类似于table中的td,大大简化了因浏览器大小的变化二对内容布局进行的调整。

使用方式

flex-box由外层容器flex container和子元素flex item组成。使用时,只要将外层容器container 的“display”设置为”flex”,里面的元素自动变成flex item。



<div class=”flex-container”><div class=”flex-item”></div><div class=”flex-item”></div><div class=”flex-item”></div>
</div>.flex-container{display:flex;}

基本属性

1. flex container属性

flex-direction

  • row(默认值):从左到右水平方向排列;
  • row-reverse:从右到做水平方向排列;
  • column:从上到下垂直方向排列;
  • column-reverse:从下到上垂直方向排列。

flex-wrap

  • nowrap(默认值):强制一行;
  • wrap:自动换行;
  • wrap-reverse:与 wrap 的含义类似,但下一行的位置排序方向与主方向相反。

flex-flow 将以上两种属性结合,如flex-flow: row wrap //即容器中的元素按水平方向排列,自动换行。

justify-content 用于分配container填充item后所剩余的空间。

  • flex-start:item从起始位置依次排列。例如123▇ ▇ ▇ ▇;
  • flex-end:item从结束方向依次排列。例如▇ ▇ ▇ ▇321;
  • center:item居中排列,例如 ▇ ▇123▇ ▇;
  • space-between:空白空间在item之间平均分配,如1▇ ▇2▇ ▇3;
  • space-around:类似space-between,但item距边距也有空白,如▇1▇2▇3▇。

align-items 用于设置对齐方式,如果为横向排列时,其属性可以这样理解

  • flex-start:上对齐;
  • flex-end:下对齐;
  • center:居中对齐;
  • stretch:拉伸对齐,(但内含item的高度需设置成auto)。

align-content属性与justify-content一致,用于行的控件排列。

2. flex-item属性

外层flex container控制是子元素的排列方式与对齐方式,内含的子元素flex item可以通过定义具体的width和height,也可以通过缩放来控制自身的尺寸。

flex-basis 类似width属性,用于确定item初始的尺寸

flex-grow 默认值为1,"flex-grow"属性的值表示的是当container有多余的空间时,不同item所获得空间的比例。比如,一个container中有 3 个item,其"flex-grow"属性的值分别为 1,2 和 3,那么当container中有剩余空间时,这 3 个条目所获得的空白空间分别占全部空间的 1/6、1/3 和 1/2。

flex-shrink 与flex-grow相反,表示的是当container的空间不足时,各个条目的尺寸缩小的比例。

flex 以上三个属性的结合。格式是"none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]"。该属性的值的 3 个组成部分的初始值分别是"0 1 auto"。当属性"flex"的值为 none 时,相当于"0 0 auto"。当组成部分"flex-basis"被省略时,其值为 0%。

例子



<div class=”flex-container”><div class=”flex-item1”></div><div class=”flex-item2”></div><div class=”flex-item3”></div>
</div>.flex-item1{width:100px;
}
.flex-item2{flex:2; /*flex-grow 的值为 1,flex-shrink 的值为 1,flex-basis 的值为 0%*/
}
.flex-item3{flex:1;
}

效果为item1为100px,剩余空间item2与item3的比为2:1

兼容性

flex-box这些年来调整了三次,带来了很多兼容性的问题

  • 新规范:2013年最新版本规范的语法,即"display: flex"
  • 中间版本:2011 年的非官方规范的语法,即"display: flexbox"
  • 老规范:2009 年的规范的语法,即"display: box"
Chrome:21+(新)20-(老)
Safari: 6.1+(新)3.1+(老)
Firefox:22+(新)2-21(老)
IE:10(中间)
Android: 4.4+(新)2.1+(老)
iOS: 7.1+(新) 3.2+(老)

所以在开发时,并不能简单的使用,必须新老规范一起用,才能完整的实现这个功能。

.flex-container{display: -webkit-box;      /* OLD - iOS 6-, Safari 3.1-6*/display: -moz-box;         /* OLD - Firefox 22- */display: -ms-flexbox;      /* TWEENER - IE 10 */display: -webkit-flex;     /* NEW - Chrome 20-,Android 2.1-4.3 */display: flex;             /* NEW */
}
.flex-item{-webkit-box-flex: 1;      /* OLD - iOS 6-, Safari 3.1-6 */-moz-box-flex: 1;         /* OLD - Firefox 22- */width: 20%;               /* For old syntax, otherwise collapses. */-webkit-flex: 1;          /* Chrome */-ms-flex: 1;              /* IE 10 */flex: 1;                  /* NEW*/
}
/*不同情况下需要添加显性的宽度,才能防止老语法下的浏览器崩溃。*/

这才算是正确使用flex-box,可以在几乎所有的浏览器下运行良好,当然除了万恶的IE:)

参考文章

如有错误,还请轻轻拍砖。:)

如何正确使用 FLEX-BOX相关推荐

  1. html弹性盒子布局,div+css3弹性盒子(flex box)布局

    一.CSS3 弹性盒子(Flex Box) 弹性盒子是CSS3的一种新布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确 ...

  2. CSS3 - 使用弹性盒子(Flex Box)实现完美居中、栅格系统及响应式布局

    CSS3弹性盒子介绍 弹性盒子是 CSS3 的一种新的布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的 ...

  3. CSS3 弹性盒子(Flex Box)

    目录 CSS3 弹性盒子(Flex Box) 一.什么是 Flexbox >>> 了解两个基本概念,接下来会频繁提到: >>> 了解两个基本方向,这个牵扯到弹性布局 ...

  4. css小游戏,js小游戏,Flex Box青蛙、冒险游戏、设计模式游戏等

    刚发现的小游戏,挺好玩的,分享一波 通过flex布局,让青蛙回到正确的位置上,地址戳这里 我卡在最后一关没有通过,通过的还请赐教 发现有一篇文章有很详细的地址链接,有兴趣的可以试试 转自作者零一的博客 ...

  5. 弹性盒子(Flex Box)模型

    目录 一.简介 二.内容 三.弹性容器的属性 1.flex-direction 2.flex-wrap 3.flex-flow 4.justify-content 5.align-items 6.al ...

  6. 4、Flex box

    简介 flexbox是一种布局模型,让网页布局更简单灵活,基于flex精确灵活控制块级盒子的布局方式,避免浮动布局中脱离文档流现象发生:给父元素添加display:flex,子元素可以自动的挤压或者拉 ...

  7. 弹性盒子(Flex Box)详解

    1 . 弹性盒子的特点 弹性盒子是 CSS3 的一种新的布局模式. CSS3 弹性盒( Flexible Box 或 flexbox),是一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当 ...

  8. Flex Box的技巧合集 #css布局

    内容大多摘抄自互联网,方便查阅. 1."如果flex-basis为100%,那么该弹性模块就会单独占一行." 当某个元素需要单独占一行时,可以这么设置.注意:flex属性是flex ...

  9. 如何使用 CSS flex box 和 Javascript 设计棋盘

    在这篇文章中,我将展示如何使用 css 和一些 JavaScript 来设计棋盘. 为此,你需要对 CSS Flex-box 和 nth-child() 属性有基本的了解. 所以让我们开始吧..... ...

  10. flex box froggy

    游戏地址:Flexbox Froggy - A game for learning CSS flexbox

最新文章

  1. 同步方法和同步代码块
  2. SqlServer性能优化 自定义动化性能收集(四)
  3. centos 下载oracle_Linux镜像下载大全
  4. Apache Nifi 实战:多表导入实现及填坑 GitChat连接
  5. 网易云api如何调用_分析网易云音乐API的经历
  6. php7 curl开源库,7个适用于PHP的最佳Curl包装器库
  7. 学术会议查询 边缘计算_我设计了可以预测边缘性的“学术不诚实”的AI系统(SMART课堂)...
  8. SPSS实战:单因素方差分析(ANOVA)
  9. 文件存储-CephFS
  10. 夜神模拟器解决apk无法安装的问题
  11. 关于srand函数的疑问
  12. 一份Java面试宝典「Java核心知识点」囊括JVM,Spring等29个技术
  13. JQuery(js辅助开发类库)
  14. Linux之——添加VIP
  15. Error occurred during initialization of VM 附oracle官网解决方式
  16. js面向对象prototype
  17. 2021美赛Latex排版美化 完整代码2
  18. 直播程序源码功能技术详解
  19. k8s部署apollo
  20. 使用 adb 对 Android 声音控制全面适配

热门文章

  1. 专注于分布式存储计算技术及其应用url http://www.nosqlnotes.net/
  2. JFace中TableViewer的使用
  3. https的ssl证书申请及服务器的nginx的配置教程
  4. Linux打开端口iptables
  5. LOL服务器维护打排位算吗,LOL:请停止你的排位行为,这是连败前的征兆!再玩就会一直掉分...
  6. Python基本操作(三)标准运算符与赋值
  7. scrapy-redis爬虫如何发送POST请求
  8. 如何能成为一名合格的前端开发工程师?
  9. 如何提升 CSS 性能的小知识
  10. html无需列表怎么打,如何以html无序列表形式而不是xml打印这些结果?