CSS3 FlexBox布局入门简析

时间:2022-06-24 16:38:54

前言

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


FlexBox简介

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


基础术语

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

看一下基础术语概念图:

CSS3 FlexBox布局入门简析


浏览器支持

CSS3 FlexBox布局入门简析

可以看到对于浏览器的支持率很好,使用率也达到了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 */
}

CSS3 FlexBox布局入门简析


flex-direction

用来设置主轴排列方向。

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

CSS3 FlexBox布局入门简析


flex-wrap

用于设置换行,默认nowrap

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

CSS3 FlexBox布局入门简析


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;
}

CSS3 FlexBox布局入门简析


align-items

设置侧轴的对齐方式。

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

CSS3 FlexBox布局入门简析


align-content

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

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

CSS3 FlexBox布局入门简析


order

排序序号。

.item {
order: <integer>;
}

CSS3 FlexBox布局入门简析


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值做分布。如下图所示:

CSS3 FlexBox布局入门简析


flex

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

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

CSS3 FlexBox布局入门简析


align-self

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

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

CSS3 FlexBox布局入门简析


概要图

CSS3 FlexBox布局入门简析


前缀脚本工具

关于编写各个不同兼容版本的前缀代码,可以使用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