彻底弄懂css3的flex弹性盒模型
由于在日常工作中使用css或者bootstrap的栅格系统已经能很好的满足业务需求,所以一直以来对css3的弹性布局不是很感冒。
近日有幸在一篇文章中领略了flex的魅力--简洁优雅。随试之。
/*容器*/
.flex{
display: flex;
display: -webkit-flex;/*Webkit内核的浏览器,必须加上-webkit前缀。*/
/*注意,设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。*/
flex-direction: row;/*决定主轴的方向,即子项目(子元素)横向排列还是纵向排列*/
/*row(默认值):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。*/
flex-wrap:nowrap;/*定义如果一条轴线排不下,如何换行*/
/*nowrap(默认):不换行。
wrap:换行,第一行在上方。
wrap-reverse:换行,第一行在下方。*/
justify-content: flex-start;/*定义了项目在主轴上的对齐方式。*/
/*flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。*/
align-items: flex-start;/*定义项目在交叉轴上如何对齐。*/
/*flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。*/
}
/*项目,容器里的子元素默认成为项目,并拥有项目的默认属性*/
.flex-item{
order:;/*定义项目的排列顺序。数值越小,排列越靠前,默认为0。*/
flex-grow:;/*定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。*/
/*如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。*/
flex-shrink:;/*定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。*/
flex-basis:auto;/*定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。*/
flex:0 1 auto;/*flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。*/
align-self:auto;/*允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性*/
}
以上就是flex相关的所有属性。详情可以参考 阮一峰大神的博文,很详细哦!
现在开始实战,写两个常用的布局。
1、图文列表。
这是效果图,下面开始上代码。
<!--图文列表-->
<div class="container1">
<div class="left"></div>
<div class="right">
<div class="title">帅舅舅</div>
<div class="desc vertical-center">
<span>JavaScript全栈工程师成长中……</span>
</div>
</div>
</div>
.container1{
display: flex;
display: -webkit-flex;
flex-direction: row;
height: 50px;
}
.left{
flex: 0 1 50px;
background-color: lightblue;
}
.right{
display: flex;
display: -webkit-flex;
flex-direction: column;
flex: 1 1 auto;
}
.title{
flex: 0 1 20px;
background-color: lightcyan;
}
.desc{
flex: 1 1 auto;
background-color: lightgray;
font-size: 12px;
color: #666;
}
.vertical-center{/*弹性布局实现垂直居中*/
display: flex;
display: -webkit-flex;
flex-direction:column;
justify-content:center;
}
这里有个技巧就是可以定义的排列顺序.left{order:1},达到左侧图片居右的效果
2、宫格布局
<!--宫格布局-->
<div class="container2">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>
.container2{
display: flex;
display: -webkit-flex;
flex-direction: row;/*决定主轴的方向*/
flex-wrap:wrap;
}
.item{
height: 100px;
flex: 0 1 50%;
background-color: lightcoral;
color: white;
font-size: 20px;
text-align: center;
line-height: 100px;
border: 1px solid white;
box-sizing: border-box;
}
现在只是简单的写了个demo,认识和理解都还不深刻。随着今后在工作中的频繁使用,相信会有更多的发现和惊喜。
彻底弄懂css3的flex弹性盒模型的更多相关文章
- 彻底搞懂flex弹性盒模型布局
为什么要用flex 基于css3简单方便,更优雅的实现,浏览器兼容性好,传统的css实现一个div居中布局要写一堆代码,而现在几行代码就搞定了,没有理由不用flex. 兼容性: Base Browse ...
- Flex 弹性盒模型
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Web的Flex弹性盒模型
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 87.CSS Flex 弹性盒模型布局教程(共用的css在48篇文章gird)
CSS Flex 弹性盒模型布局教程 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. flex布局就是给任何一个容器添加 dis ...
- box flex 弹性盒模型(转载)
css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间.这与XUL(火狐使用的用户交互语言)相似,其它语言也使用相同的盒模型,如XAML .GladeX ...
- css3教程:弹性盒模型
Css3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间.这与XUL(火狐使用的用户交互语言)相似,其它语言也使用相同的盒模型,如XAML .GladeX ...
- columns分栏与flex弹性盒模型
columns 分栏 值:column-width:设置每列的宽度 column-count:设置列数 例:columns{200px 3} 列数和宽度固定 co ...
- IT兄弟连 HTML5教程 CSS3属性特效 弹性盒模型
CSS3引入了新的盒模型——弹性盒模型,该模型决定一个盒子在其他盒子中的分布方式以及如何处理可用的空间.使用该模型,可以很轻松的创建自适应浏览器窗口的流动布局或自适应字体大小的弹性布局.弹性盒模型看起 ...
- flex弹性盒模型
flex 意思是弹性布局,用来给盒模型提供最大的灵活度,指定容器中的项目为弹性布局,类似于float:left; 比float的好处是容器没有设置高度,会根据项目来自适应高度,我们都知道,设置floa ...
随机推荐
- async 和 await
win8 app开发中使用async,await可以更方便地进行异步开发. async,await的使用可参考代码:Async Sample: Example from "Asynchron ...
- for() 和$.each()的用法区别
一.对于数组 var arr=['姚明','易建联','张继科']; $.each(arr,function(index,value){ document.write(index+"=&qu ...
- "我们分手吧。"女的对男的说。 "为什么呢?亲爱的,你不要我了么?" "因为你幼稚。"女的坚定地语气回答道,然后转身准备走。 男的上前踩住女的影子,然后说...
1."我们分手吧."女的对男的说. "为什么呢?亲爱的,你不要我了么?" "因为你幼稚."女的坚定地语气回答道,然后转身准备走. 男的上前踩 ...
- json、JSONObject、JSONArray的应用
type.java package jiekou.duixiang; import java.text.ParseException;import java.text.SimpleDateFormat ...
- UVa 508 Morse Mismatches (模糊暴力)
题意:莫尔斯电码,输入若干个字母的Morse编号,一个字典和若干编码.对于每个编号,判断它可能的是哪个单词, 如果有多个单词精确匹配,输出第一个单词并加一个“!”:如果无法精确匹配,那么在编码尾部增加 ...
- day02(继承,重写,this,super,final,抽象类)
继承 概述:日常生活中儿女总会继承长辈的遗产,java语言也是.通过继承多种实物之间形成一种关系. 特点: ①一个类只能继承一个父类 ②一个父类可以有多个子类 ③可以多层继承(a类继承b类 C类继 ...
- spring mvc 注解@Controller @RequestMapping @Resource的详细例子
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...
- JSONP的原理与实现(基于jQuery)
为什么会有JSONP?因为我们使用AJAX,使用AJAX可能就会遇到跨域的需求,如何解决呢,对,就是JSONP. 这里注意下JSON和JSONP不是一类,虽然他们只是一个字母只差,但是实际差别很大.这 ...
- Team Foundation Server 开发流程管理管理研讨会
这周,和微软公司的朋友一起,受北京某金融企业邀请,为企业软件部门一个70多人的软件团队提供了一场基于Team Foundation Server的软件软件流程的技术研讨会.在研讨会中,培训基于微软Te ...
- Transaction And Lock--使用资源锁来控制并发
写过程序的朋友都知道,在多线程处理时,对于非线程安全的对象,需用使用锁定特定对象(LOCK)的方法来保证串行操作.曾经有位开发询问我,在SQL Server内部是否有类似的实现方法来控制某一操作不能并 ...