本文介绍下flex的用法和属性

这个一个自适应的3列盒子

<div class="flex">
<div style="background-color:red;">红色</div>
<div style="background-color:blue;">蓝色</div>
<div style="background-color:green;">绿色</div>
</div>
<style>
.flex{ display: flex;}
.flex div{border: 1px solid #000; flex:auto; height: 100px;}
</style>
红色
蓝色
绿色

flex: flex-grow flex-shrink flex-basis|auto|initial|inherit;

flex主要带3个属性值

分别是flex-grow   规定项目将相对于其他灵活的项目进行扩展的量。

红色
蓝色
绿色

<div class="flex1">
<div style="background-color:red;">红色</div>
<div style="background-color:blue;">蓝色</div>
<div style="background-color:green;">绿色</div> </div>
<style>
.flex1{ display: flex; width:400px;}
.flex1 div{border: 1px solid #000; flex:auto; height: 200px;}
.flex1 div:nth-child(1){-webkit-flex:1 0 100px;flex:1 0 100px;}
.flex1 div:nth-child(2){-webkit-flex:2 0 100px;flex:2 0 100px;}
.flex1 div:nth-child(3){-webkit-flex:3 0 100px;flex:3 0 100px;}
</style>

如上面的例子,当父容器的宽度大于子元素的宽度和的时候触发

因为设置了flex-basis为100px

flex的宽度为400px,里面的3个dom的总长度设置为300px;那么多了100的剩余宽度。

第一个子元素的扩展量:(1/(1+2+3))*100,即约等于16px;

第二个子元素的扩展量:(2/(1+2+3))*100,即约等于32px;

第三个子元素的扩展量:(3/(1+2+3))*100,即约等于48px;

分别是flex-shrink 规定项目将相对于其他灵活的项目进行收缩的量。

红色
蓝色
绿色

<div class="flex2">
<div style="background-color:red;">红色</div>
<div style="background-color:blue;">蓝色</div>
<div style="background-color:green;">绿色</div> </div>
<style>
.flex2{ display: flex; width:400px;}
.flex2 div{border: 1px solid #000; flex:auto; height: 100px;}
.flex2 div:nth-child(1){-webkit-flex:0 1 200px;flex:0 1 200px;}
.flex2 div:nth-child(2){-webkit-flex:0 2 200px;flex:0 2 200px;}
.flex2 div:nth-child(3){-webkit-flex:0 3 200px;flex:0 3 200px;}
</style>

如上面的例子,当父容器的宽度小于子元素的宽度和的时候触发

因为设置了flex-basis为200px

flex的宽度为400px,里面的3个dom的总长度设置为600px;那么少了200px的剩余宽度。

因为设定过收缩的量所以需要200*1+200*2+200*3=1200;

所以第1个子容器的宽度为200-(200*1/1200)*200=166px

所以第2个子容器的宽度为200-(200*2/1200)*200=134px

所以第3个子容器的宽度为200-(200*3/1200)*200=100px

当「flex-basis」在「flex」属性中不为0时(包括值为auto,此时伸缩基准值等于自身内容宽度),「flex子项」将分配容器的剩余空间(剩余空间即等于容器宽度减去各项的伸缩基准值)

当「flex-basis」在「flex」属性中等于0时,「flex子项」将分配容器的所有空间(因为各项的伸缩基准值相加等于0,剩余空间等于容器宽度减去各项的伸缩基准值,即减0,最后剩余空间值等于容器宽度),所以可以借助此特性,给各子项定义「flex: n」来进行按比例均分容器总宽度

  • 浅绿 = 支持
  • 红色 = 不支持
  • 粉色 = 部分支持
Values IE Firefox Chrome Safari Opera iOS Safari Android Browser Android Chrome
Basic Support 6.0-10.0 2.0-21.0 4.0-20.0 6.0 15.0+-webkit- 6.0-6.1 2.1-4.3 18.0-19.0
11.0+ 22.0+ 21.0+-webkit- 6.1+-webkit- 17.0+ 7.0+-webkit- 4.4+ 20.0+-webkit-
29.0+ 9.0+ 9.0+ 28.0+

display:flex css的更多相关文章

  1. CSS弹性盒布局(display:flex)

    CSS弹性布局(display:flex) 参考: http://www.runoob.com/w3cnote/flex-grammar.html https://www.jianshu.com/p/ ...

  2. css中的clear:both,display:flex;

    介绍两者一起讨论的原因: 在明天就国庆的日子里陪着程序员的只有代码,啤酒,还有音乐,然后就是灯光下默默陪伴自己的影子.好了,不矫情了. -------------------------------- ...

  3. HTML/CSS:display:flex 布局教程

    网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...

  4. css display:flex 属性

    一:display:flex 布局 display:flex 是一种布局方式.它即可以应用于容器中,也可以应用于行内元素.是W3C提出的一种新的方案,可以简便.完整.响应式地实现各种页面布局.目前,它 ...

  5. 整理CSS中display flex(布局利器)

    关于display:flex布局,有人了解颇深,我也是看着别人的东西学习的. display:flex的布局是什么.基本概念之类的我根本就不了解,只会用.每次看到概念之类的东西,我都是扫一眼就过去. ...

  6. css兼容display:flex

    上代码: 这个是针对父元素: .container{ display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */ displa ...

  7. CSS——display:flex

    Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 设为Flex布局以后,子元素的float.clear和vertical-align属性 ...

  8. 浅谈display:flex

    display:flex 意思是弹性布局 首先flex的出现是为了解决哪些问题呢? 一.页面行排列布局 像此图左右两个div一排显示 可以用浮动的布局方式 html部分 css部分 这种布局有两个缺点 ...

  9. 多栏多列布局(display:flex)

    display:flex 多栏多列布局浏览器支持情况:火狐直接支持w3c无前缀写法,谷歌和opera支持-webkit- 前缀写法,比较适合移动端开发使用, display:flex 这个牛逼的css ...

随机推荐

  1. vue2项目使用axios发送请求

    前言:在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 目前主流的 Vue 项目,都选 ...

  2. 关闭Excel提示文件格式和扩展名不匹配的警告框

    打开某些excel表时,Excel会提示: "a.xls"的文件格式和扩展名不匹配.文件可能已损坏或不安全.除非您信任其来源,否则请勿打开.是否仍要打开它?   在编辑大量的xls ...

  3. thinkjs 文件上传

    采用thinkjs框架写前后端 let formdata = new FormData($('form')[0]); $('#fileUpload').submit(function (e) { e. ...

  4. Spring4整合quartz2.2.3,quartz动态任务

    Spring4整合quartz2.2.3,quartz动态任务 >>>>>>>>>>>>>>>>> ...

  5. 多线程编程学习一(Java多线程的基础).

    一.进程和线程的概念 进程:一次程序的执行称为一个进程,每个 进程有独立的代码和数据空间,进程间切换的开销比较大,一个进程包含1—n个线程.进程是资源分享的最小单位. 线程:同一类线程共享代码和数据空 ...

  6. Microsoft .Net Remoting系列专题之一:.Net Remoting基础篇

    Microsoft .Net Remoting系列专题之一 一.Remoting基础 什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式.从微软的产品角度来看,可以说Remotin ...

  7. servlet中doPost()和doGet()

    转载至 http://blog.163.com/grandry_it_bird/blog/static/1751633362010102615553610/ 一般来说我们是用不到doGet方法的,do ...

  8. Error Handling in ASP.NET Core

    Error Handling in ASP.NET Core 前言  在程序中,经常需要处理比如 404,500 ,502等错误,如果直接返回错误的调用堆栈的具体信息,显然大部分的用户看到是一脸懵逼的 ...

  9. 【C++小白成长撸】--N阶幻方(魔阵)矩阵

    解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时 ...

  10. hdu 3342 拓扑排序 水

    好久没切题  先上水题! 拓扑排序! 代码: #include<iostream> #include<cstdio> #include<cstring> using ...