花点时间弄懂flex布局.

栏目: Html · 发布时间: 5年前

内容简介:Flex是Flexible Box的缩写,意为弹性布局。任何容器都可以指定为Flex布局.备注以下:在文中,自我理解:主轴为X轴,交叉轴为Y轴之所以有这个布局出现,是因为布局的传统方案:基于盒状模型,依赖display属性,position属性,float属性对于那些特殊布局非常不方便.

一.Flex布局是什么

Flex是Flexible Box的缩写,意为弹性布局。任何容器都可以指定为Flex布局.

备注以下:在文中,自我理解:主轴为X轴,交叉轴为Y轴

.box{
  display:flex
}

之所以有这个布局出现,是因为布局的传统方案:基于盒状模型,依赖display属性,position属性,float属性对于那些特殊布局非常不方便.

行内元素若想使用Flex

.box{ 
  display:inline-flex 
}

若是webkit内核的浏览器,例如safari,必须加上-webkit前缀.

如果设置了flex,则 float,clear,vergical-align 三个属性将失去作用.

二.Flex的一些名词概念

采用Flex布局的元素,被称为 Flex容器(Flex container) ,

它的所有子元素自动成为容器成员,被称为Flex项目(Flex item)

花点时间弄懂flex布局.

容器默认存在两根轴: 水平的主轴(main axis)垂直的交叉轴(cross axis) .

主轴的开始位置(与边框的交叉点)叫做 main start ,结束位置叫做 main end ;交叉轴的开始位置叫做 cross start ,结束位置叫做 cross end

项目默认沿主轴排列。单个项目(Flex item)占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。

三.容器的属性

3.1 flex-direction属性

flex-direction属性决定主轴(在我自已的理解中,主轴即X轴)的方向(即项目的排列方向)

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

花点时间弄懂flex布局.

属性解释:

row(默认值):主轴为水平方向,起点在左端

row-reverse:主轴为水平方向,起点在右端

column:主轴为垂直方向,起点在上沿

column:主轴为垂直方向,起点在下沿

3.2 flex-wrap属性

默认情况下,项目(flex-item)都排在一条线上,flex-wrap属性定义,如果一条轴线排不下,如何换行.

.box{
  flex-wrap:nowrap | wrap | wrap=reverse;
}

属性解释:

总共有12个块

1.nowrap(默认值):不换行

花点时间弄懂flex布局.

2.wrap:换行,且第一行在上方

花点时间弄懂flex布局.

3.wrap-reverse:换行,第一行在下方

花点时间弄懂flex布局.

3.3 flex-flow属性

flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row 与 nowrap

3.4 justify-content属性

justify-content定义了项目在主轴上的对齐方式

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

属性解释:

1.flex-start:左对齐

花点时间弄懂flex布局.

2.flex-end:右对齐

花点时间弄懂flex布局.

3.center:居中

花点时间弄懂flex布局.

4.space-between:两端对齐,项目之间间隔相等

花点时间弄懂flex布局.

5.space-around:每个项目两侧的间隔相等,所以,项目之间的间隔比项目与边的间隔大一倍

花点时间弄懂flex布局.

3.5 align-items属性

align-items属性定义项目在交叉轴上如何对齐

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

属性解释:

1.flex-start:Y轴的起点对齐

花点时间弄懂flex布局.

2.flex-end:Y轴的终点对齐

花点时间弄懂flex布局.

3.center:Y轴的中点对齐

花点时间弄懂flex布局.

4.baseline:项目第一行文字的基线对齐

花点时间弄懂flex布局.

5.stretch(默认值):如果项目未设置高度或设为auto,则占满整个容器的高度

花点时间弄懂flex布局.

3.6 align-content属性

align-content属性定义了多根轴线的对齐方式,如果项目只有一根轴线,该属性不起作用.

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

属性解释:

1.flex-start:与Y轴的起点对齐

花点时间弄懂flex布局.

2.flex-end:与Y轴的终点对齐

花点时间弄懂flex布局.

3.center:与Y轴的中点对齐

花点时间弄懂flex布局.

4.space-between:与Y轴两端对齐,轴线之间的间隔平均分布

花点时间弄懂flex布局.

5.space-around:每根轴线两侧的间隔都相等,所以轴线之间的间隔比轴线与边的间隔大一倍

花点时间弄懂flex布局.

6.stretch(默认值):轴线占满整个Y轴

花点时间弄懂flex布局.

四.项目(Flex-item)的属性

4.1 order属性

order属性定义项目(Flex-item)的 排序 顺序,数值越小,排列越靠前,默认为0.

.item{
  order:<int>
}

花点时间弄懂flex布局.

花点时间弄懂flex布局.

花点时间弄懂flex布局.

4.2 flex-grow属性

flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大

.item{
  flex-grow:<number>;默认为0
}

若三个模块flex-grow都为1,则显示如下:

花点时间弄懂flex布局.

若三个模块flex-grow值如下,则显示:

.item-one{
 flex-grow:1
}
.item-two{
 flex-grow:2
}
.item-three{
 flex-grow:1
}

花点时间弄懂flex布局.

4.3 flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,如果空间不足,则该项目缩小,若为0,则不缩小.负值对该属性无效。

.item{
  flex-shrink:<number>;默认为1
}

花点时间弄懂flex布局.

4.4 flex-basis属性

flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

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

它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间,不会变大变小。

4.5 flex属性

flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。

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

该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)

4.6 align-self属性

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch

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

花点时间弄懂flex布局.

以上内容参考此链接,欢迎查看原版.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Domain-Driven Design

Domain-Driven Design

Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99

"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具