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 ...
随机推荐
- 基于Vue实现后台系统权限控制
原文地址:http://refined-x.com/2017/08/29/基于Vue实现后台系统权限控制/,转载请注明出处. 用Vue/React这类双向绑定框架做后台系统再适合不过,后台系统相比普通 ...
- 最新spring官网(spring.io)下载方法
这里介绍的是用于WEB开发的spring-frame框架的下载方法. 如果想下载其他的spring产品,直接进入http://projects.spring.io,选择自己要的即可.下载方法同下. 要 ...
- #define和typedef在windows上的应用
typedef的应用 typedef是在计算机编程语言中用来为复杂的声明定义简单的别名. 下面的代码定义了一些常见类型的别名 typedef int INT; typedef unsigned int ...
- Spring(四)-- JdbcTemplate、声明式事务
1.Spring提供的一个操作数据库的技术JdbcTemplate,是对Jdbc的封装.语法风格非常接近DBUtils. JdbcTemplate可以直接操作数据库,加快效率,而且学这个JdbcT ...
- zoj3785 What day is that day?
It's Saturday today, what day is it after 11 + 22 + 33 + ... + NN days? Input There are multiple tes ...
- 2017年8月28日 HTML/CSS 语法(待填坑)
今天这种节日真的是 ----------------------------------------------------------- HTML
- HTML5新结构标签和移动端页面布局
--------------------HTML5新结构标签--------------------1.h5新增的主要语义化标签如下: 1.header 页面头部.页眉 2.nav 页面导航 3.ar ...
- Ibatis组合键关联查询
在使用Ibatis时,会经常遇到关联查询,一般有两种解决方案: 使用代码进行关联查询 使用Ibatis配置文件进行关联查询 使用代码进行关联查询不作解释,本次主要是针对Ibatis配置文件进行关联查询 ...
- [js高手之路]Vue2.0基于vue-cli+webpack父子组件通信教程
在git命令行下,执行以下命令完成环境的搭建: 1,npm install --global vue-cli 安装vue命令行工具 2,vue init webpack vue-demo 使用v ...
- 【★】Web精彩实战之
JS精彩实战之<智能迷宫> ---宝贵编程经验分享会--- hello大家好,这里是Web云课堂,之前的一年里我们经历了Html和CSS的系统攻城,此时的你们已经是做静态(动静结 ...