CSS3Flexbox布局一次搞懂_第1页
CSS3Flexbox布局一次搞懂_第2页
CSS3Flexbox布局一次搞懂_第3页
CSS3Flexbox布局一次搞懂_第4页
CSS3Flexbox布局一次搞懂_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、CSS3 Flexbox布局一次搞懂1. 引言希望可以通过可视化的方式帮助您了解Flexbox属性如何影响flex布局。2. 正文2.1 引入Flexbox布局官方称为CSS Flexible Box Layout Module是一个CSS3新的布局模块,用于实现容器里项目的对齐、方向、排序(即使在项目大小位置、动态生成的情况)。flex容器最大的特性在于,能够修改子元素的宽度和高度,以满足在不同尺寸屏幕下的如意分布。许多设计人员、开发人员发现flexbox布局方式使用简单,定位元素更加简单、复杂的布局更容易用较少的代码实现,大大地简化了开发流程。不像块状布局、内联布局那样基于竖直方向、水平方

2、向,flexbox的布局算法基于方向。flexbox布局适用于小的应用组件、新的CSS Grid布局模块更适用于大量的布局。本指南不解释flex属性如何工作,我们只是用可视化的方式展示flex属性如何影响布局。2.2 基础在具体描述flex属性之前,我们先来简要介绍下flexbox模型。flex布局由父容器(我们叫做flex container)和它的子元素(我们叫做flex items)组成。在上图所示的盒子里,你可以看到用来描述flex container和flex items的属性和术语,如果你想了解详细信息,请访问W3C的flexbox model官方文档.flexbox自2009的初

3、次草案开始,已经经历了几次更新和语法修改,为了避免困惑、保证清晰,我们仅仅使用2014年9月最后一次工作草案中的语法。如果您想要实现旧浏览器的兼容,请访问这篇文章寻找最佳实践。最近的flexbox规范浏览器支持情况如下:Chrome 29+Firefox 28+Internet Explorer 11+Opera 17+Safari 6.1+ (prefixed with -webkit-)Android 4.4+iOS 7.1+ (prefixed with -webkit-)您也可以到caniuse了解浏览器兼容情况详情。本文中的用到的一些术语的表达约定如下.flex-container-

4、弹性容器.flex-item-弹性子元素.main axis-主轴.cross axis-侧轴.2.3 使用使用flexbox只需要在父元素上设置display属性即可。如果您想让它以内联方式显示,则注意:仅仅需要在父元素上设置这一个属性即可,它的子元素会自动变成flex items。有很多方式分组flexbox的所有属性,我发现最容易理解的方式是分成两组,一组为弹性容器的属性,另一组为弹性子元素的属性,接下来我们按这种方式来一一解析。2.4 弹性容器(Flex container)属性2.4.1 flex-direction该属性通过设置flex container主坐标轴方向影响子元素(f

5、lex item)如何在容器中排布。我们可以设置两个主要的方向水平和垂直方向。可以接受的值有四个row、row-reverse、column、column-reverse,如下所示。弹性子元素将会按照自左向右的水平排列。弹性子元素将会自右向左水平排列。弹性子元素将自上而下竖直排列弹性子元素将自下而上竖直排列默认值为row.2.4.2 flex-wrapflexbox最初的理念是保持弹性容器的子元素在一行中。flex-wrap属性控制当子元素items超出弹性容器范围是是否换行,以及新行的方向。本属性可以接受一下几个值:no-wrap、wrap、wrap-reverse,分别如下所示。弹性子元素

6、将会在一行显示,默认的子元素items将会缩减以适应弹性容器的宽度。如果需要的话,弹性子元素将会自左向右、自上而下地多行显示。如果需要的话,弹性子元素将会自左向右、自下而上地多行显示。默认值为no-wrap.2.4.3 flex-flowflex-flow属性是flex-direction和flex-wrap属性的快捷方式,复合属性。默认值为row nowrap.2.4.4 justify-contentjustify-content设置弹性子元素在弹性容器中当前行主坐标的对齐方式,当弹性容器里一行上的所有子元素都不能伸缩或已经达到其最大值时,该属性可协助对多余的空间进行分配。可以接受的值为f

7、lex-start、flex-end、center、space-between、space-around等五个值,默认值为flex-start。详细如下所示。弹性子元素flex items将会弹性容器中居中对齐。弹性子元素flex items中的第一个、最后一个对齐弹性容器的边缘,其余均匀分布。弹性子元素flex items中的任何一个都参与均匀分布,即使是第一个和最后一个。2.4.5 align-itemsalign-items设置弹性子元素在弹性容器中当前行侧轴上的对齐方式,跟justify-content类似但是作用于侧轴(flex-direction为row和row-reverse时为

8、纵轴,flex为column和column-reverse时为横轴)。该属性设置所有flex items(包含匿名的item)的默认对齐方式。可以接受的值为flex-start、flex-end、center、baseline、stretch等五个值,默认值为stretch。详细如下所示。弹性子元素将会从侧轴开始到侧轴结束铺满整个高度(宽度)。弹性子元素将会堆栈在弹性容器的侧轴开始位置。弹性子元素将会堆栈在弹性容器的侧轴结束位置。弹性子元素将会堆栈在弹性容器的侧轴中间位置。弹性子元素将会以文字基线的方式对齐。2.4.6 align-content当弹性容器侧轴中有空白时,align-conte

9、nt属性设置伸缩行的对齐方式,正如justify-content在主轴上设置对齐方式一样。可以接受的值为:stretch、flex-start、flex-end、center、space-between、space-around等, 默认值为stretch。各行平分剩余空间。各行堆栈紧靠侧轴起始边界。各行堆栈紧靠侧轴结束边界。各行堆栈位于侧轴居中位置。各行之间空白均匀分布,第一行和最后一行紧靠侧轴边缘。各行在弹性盒子中均匀分布,两端保留子元素与子元素之间间距大小的一半。注意该属性只作用于弹性容器里拥有多行的情况,如果只有单行该属性无效。另外。上面所说的“行”指的是主轴方向的平行的数据,例如fl

10、ex-direction值为row、row-reverse时指数据行,值为column、column-reverse时指数据列。2.4.7 注意事项所有的column-属性对弹性容器无效:first-line和:first-letter伪对象对弹性容器无效2.5 弹性子元素(Flex item)属性2.5.1 orderorder属性控制弹性容器里子元素的顺序,默认情况下按照弹性容器里添加的顺序排列。可以接受的值为整型数字,默认值为0.弹性子元素将按照给定的数字进行排列,如下图所示。2.5.2 flex-grow该属性设置弹性子元素的扩展比率(flex-grow),该值决定某个子元素相对于其他

11、普通子元素的扩展大小。可接受值为数字,默认值为0,负数无效。如果所有的弹性子元素具有相等的flex-grow值,那么所有的子元素将具有相同的大小。第二个元素可以相对比较大,如下图所示。2.5.3 flex-shrink该属性设置弹性子元素的收缩比率(flex-shrink),该值决定某个子元素相对于其他普通子元素的收缩大小。默认情况下所有子元素都可以被收缩,如果设置为0,则不收缩。2.5.4 flex-basis该属性指定弹性子元素伸缩前的默认大小值,相当于width和height属性。如下图所示,我们设置第四个子元素的宽度值。2.5.5 flex该属性为flex-grow, flex-shrink和flex-basis属性的复合属性,一个简写的方式。默认值为:0 1 auto。注意, W3C推荐使用复合属性的方式,因为复合属性的方式可以方便地重置没有指定具体值的属性以适应大部分的常规应用。2.5.6 align-selfalign-self允许独立的弹性子元素覆盖弹性容器的默认对齐设置(align-items)。大家到align-items部分获

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论