CSS3 FlexBox布局入门简析


前言

你们还在仅仅使用块、行内、表格、定位等传统布局方式进行网页的布局吗?
告诉你们一个新的布局模式,CSS3中新引入的FlexBox布局,布局方式十分灵活,含有优秀和惊奇的新特性,而且在主流浏览器上的兼容也不错,是新布局方式的首选。
下面说一下。


FlexBox简介

FlexBox布局,全称“CSS Flexible Box Layout Module”,即伸缩布局盒,目的在于提供一个更好更有效的布局方式,用来控制项目的对齐和自由分配容器空间。


基础术语

FlexBox和CSS3的其它属性不太一样,它是一个模块,并非一个属性,其中包含多个CSS3 属性。

看一下基础术语概念图:


浏览器支持

可以看到对于浏览器的支持率很好,使用率也达到了90%以上。

浏览器的支持:

  • Chrome any
  • Firefox any
  • Safari any
  • Opera 12.1+
  • IE 10+
  • iOS any
  • Android any

历史

FlexBox从2009年7月W3C工作草案,一直到现在,话法规范主要分为以下三个版本规范:

  • 旧版本: 2009年版本,使用display:boxdisplay:inline-box
  • 混合版本: 2011年版本,使用display:flexboxdisplay:inline-flexbox
  • 新版本:使用display:flexdisplay:inline-flex

所以为了让各类浏览器可以全部兼容,我们至少要写上面这三种版本的相应语法。


各属性说明


display

用于定义FlexBox容器。

.container {
  display: flex; /* or inline-flex */
}


flex-direction

用来设置主轴排列方向。

.container {
  flex-direction: row | row-reverse | column | column-reverse;
}


flex-wrap

用于设置换行,默认nowrap

.container{
  flex-wrap: nowrap | wrap | wrap-reverse;
}


flex-flow

flex-directionflex-wrap两个属性的合并缩写。

flex-flow: <‘flex-direction’> || <‘flex-wrap’>

justify-content

设置主轴的对齐方式。

.container {
  justify-content: flex-start | flex-end | center | space-between | space-around;
}


align-items

设置侧轴的对齐方式。

.container {
  align-items: flex-start | flex-end | center | baseline | stretch;
}


align-content

多行时,侧轴的对齐方式。

.container {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}


order

排序序号。

.item {
  order: <integer>;
}


flex-grow

设置项目的扩展比例。

.item {
  flex-grow: <number>; /* default 0 */
}

flex-shrink

设置项目的缩小比例。

.item {
  flex-shrink: <number>; /* default 1 */
}

flex-basis

定义Flex项目在分配Flex容器剩余空间之前的一个默认尺寸。

.item {
  flex-basis: <length> | auto; /* default auto */
}

如果设置为0,内容不在考虑周围额外空间。如果设置为auto,额外空间会基于flex-grow值做分布。如下图所示:


flex

flex是flex-growflex-shrinkflex-basis三个属性的缩写。第二个和第三个参数(flex-shrinkflex-basis)是可选值。其默认值是0 1 auto

.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}


align-self

用来在单独的伸缩项目上覆写默认的对齐方式

.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}


概要图


前缀脚本工具

关于编写各个不同兼容版本的前缀代码,可以使用autoprefixer脚本,这个脚本会解析CSS文件并且添加浏览器前缀到CSS相应规则中。

自动前缀工具 autoprefixer


拓展资源

FlexBox属性工具 Flexbox playground

FlexBox Games FLEXBOX FROGGY

W3C文档 Flexbox in the CSS specifications


博客名称:王乐平博客

博客地址:http://blog.lepingde.com

CSDN博客地址:http://blog.csdn.net/lecepin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值