彻底弄懂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 ...
随机推荐
- python的基础操作2
一 字符串格式化 占位符 %s和%d %s是属于字符串的占位符,而%d是属于数字类型的占位符 #占位符 %s %d # a="我叫%s,年龄%d,就是一个%s"%("al ...
- 2018.09.24 codeforces 1051F. The Shortest Statement(dijkstra+lca)
传送门 这真是一道一言难尽的题. 首先比赛的时候居然没想出来正解. 其次赛后调试一直调不出来最后发现是depth传错了. 其实这是一道简单题啊. 对于树边直接lca求距离. 由于非树边最多21条. 因 ...
- 2018.06.30 BZOJ 2342: [Shoi2011]双倍回文(manacher)
2342: [Shoi2011]双倍回文 Time Limit: 10 Sec Memory Limit: 128 MB Description Input 输入分为两行,第一行为一个整数,表示字符串 ...
- win7 精简板 安装ardunio uno r3驱动
http://www.arduino.cn/thread-2350-1-1.html 下载那个64位的 http://www.keyes-robot.cn/forum.php?mod=viewthre ...
- 继承方法-->一级一级继承
Grand.prototype.lastName = 'ji'; function Grand(){}; var grand = new Grand(); Father.prototype = gra ...
- html 源码 引入样式
post-title2 示例 sdf post-title 示例
- (网络流 匹配 KM) Going Home --poj -- 2195
链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82835#problem/D 有n个人有n栋房子,每栋房子里能进一个人,但每走一格 ...
- hdu1251 && hud 1247 (字典树)
hdu1251 题目 这道题,主要是在主函数的输入输出上犹豫了. #include<stdio.h> #include<cstring> #include<iostrea ...
- hdu 5045 N个人做M道题的正确率
http://acm.hdu.edu.cn/showproblem.php?pid=5045 给出N个人做M道题的正确率,每道题只能由一个人做出,并且当所有人都做出来且仅做出一道题时,做过题的人才可以 ...
- web问题
模拟form提交过程中form(hidden)时:The frame requesting access has a protocol of "http", the frame b ...