display:flex css
本文介绍下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的更多相关文章
- CSS弹性盒布局(display:flex)
CSS弹性布局(display:flex) 参考: http://www.runoob.com/w3cnote/flex-grammar.html https://www.jianshu.com/p/ ...
- css中的clear:both,display:flex;
介绍两者一起讨论的原因: 在明天就国庆的日子里陪着程序员的只有代码,啤酒,还有音乐,然后就是灯光下默默陪伴自己的影子.好了,不矫情了. -------------------------------- ...
- HTML/CSS:display:flex 布局教程
网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...
- css display:flex 属性
一:display:flex 布局 display:flex 是一种布局方式.它即可以应用于容器中,也可以应用于行内元素.是W3C提出的一种新的方案,可以简便.完整.响应式地实现各种页面布局.目前,它 ...
- 整理CSS中display flex(布局利器)
关于display:flex布局,有人了解颇深,我也是看着别人的东西学习的. display:flex的布局是什么.基本概念之类的我根本就不了解,只会用.每次看到概念之类的东西,我都是扫一眼就过去. ...
- css兼容display:flex
上代码: 这个是针对父元素: .container{ display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */ displa ...
- CSS——display:flex
Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 设为Flex布局以后,子元素的float.clear和vertical-align属性 ...
- 浅谈display:flex
display:flex 意思是弹性布局 首先flex的出现是为了解决哪些问题呢? 一.页面行排列布局 像此图左右两个div一排显示 可以用浮动的布局方式 html部分 css部分 这种布局有两个缺点 ...
- 多栏多列布局(display:flex)
display:flex 多栏多列布局浏览器支持情况:火狐直接支持w3c无前缀写法,谷歌和opera支持-webkit- 前缀写法,比较适合移动端开发使用, display:flex 这个牛逼的css ...
随机推荐
- "R6002 floating point support not loaded"问题分析
今天为了追踪程序线程退出耗时时间,添加了耗时时间输出日志: TimerMeter tm; // do some threads exit logic float fSecs = tm.Elapsed( ...
- Android 7.0 Power 按键处理流程
Android 7.0 Power 按键处理流程 Power按键的处理逻辑由PhoneWindowManager来完成,本文只关注PhoneWindowManager中与Power键相关的内容,其他 ...
- JSP编译指令与动作指令
下面这个面试经常问到,要理解. 上面这个效果一样,重点. <jsp:include>动作在请求期间被执行,而include指令在编译期页面间被执行.
- Java jdk 快速配置
JAVA_HOME C:\Program Files\Java\jdk1.8.0_92 Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; CLASSPATH ...
- Project 5:替换指定字符串
这个程序主要用于替换指定字符串,较为简单. #include <stdio.h> void change(char *,char *,char *); int ju(char *,char ...
- JPG、PNG和GIF图片的基本原理及优…
JPG.PNG和GIF图片的基本原理及优化方法 一提到图片,我们就不得不从位图开始说起,位图图像(bitmap),也称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的.这些点可以进行不同的 ...
- 201521123082 《Java程序设计》第14周学习总结
201521123082 <Java程序设计>第14周学习总结 标签(空格分隔):java 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. Answ ...
- 201521123037 《Java程序设计》第8周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 1. String[] list1=str.split(" ...
- 201521123106 《Java程序设计》第5周学习总结
1. 本章学习总结 2. 书面作业 Q1. 代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 答 ...
- 201521123066 《Java程序设计》第三周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...