如果一个人要去管理十几个岛屿,对岛屿管理的第一步是了解每一个岛屿的情况,然后才是了解岛屿间的经济来往。知识也是这样,每一个知识点都是一个岛屿,先把每一个点了解透彻,才能灵活地将各个点串联、组合以此实现自己的目的。
弹性盒学习的第一步,就是对与弹性盒有关的每一个属性、每一点进行全面的扫荡。
1. flex 容器和 flex 项目
flex 项目与 flex 容器的关系通过名称就可以了解,flex 项目是 flex 容器中的元素,一个容器可以包含多个项目。使一个元素变为 flex 容器,只需将该元素的 disply 设为 flex。如果你想将行内元素设置为 flex 容器,可以将元素的 display 设置为 inline-flex。设置了 flex 容器后,容器的子元素会自动成为 flex 项。
<p>
<span></span>
<span></sapn>
</p>
p {
daiplay: flex;
}
就像上面第一段代码,设置下方的 CSS 属性后,p 变为 felx 容器,p 内部的两个 span 元素就变为了 flex 项。
2. main axis(主轴)和 cross axis (交叉轴)

主轴是指沿着 flex 元素放置方向延伸的轴,主轴的开始的位置称为 main start ,主轴的结束的位置成为 main end 。垂直于主轴的是交叉轴,与主轴一样,交叉轴开始的位置称为 cross start ,结束的位置称为 cross end.默认情况下,主轴的方向默认是 row ,即 flex 项沿行由左向右进行排列。主轴的方向可以由容器的 flex-direction 属性改变。
flex-direction: row | row-reverse | column | column-reverse
row-reverse 指 flex 项由右向左进行排列,main start在为容器的最右边。column 则将主轴方向变为由上到下。
3.容器属性枚举
容器的属性上面已经提到了一个 flex-direction。其它的有:flex-wrap、flex-flow、align-items、justify-content、align-content。每一种属性的功能在这里先进行一个简短的概括,具体的使用在以后的章节中进行讨论。
- flex-direction: 指定了内部元素是如何在子元素中布局的,定义了主轴方向。可以接受四个值,在前面已经提到。
- flex-wrap: 指定 flex 项是单行显示还是多行显示,如果指定多行,该属性允许你指定项的堆叠方向(如:由左到右,或由右到左)。它有 no-wrap、wrap、wrap-reverse 三个值。
- flex-flow: 该属性是 flex-direction 和 flex-flow 属性的缩写。如 flex-flow: row wrap ,相当于 flex-direction: row flex-flow:wrap
- align-items: 定义 flex 项在交叉轴上的对齐。取值有 flex-start、flex-end、center、baseline、stretch ,默认为 stretch。
- justify-content: 定义 flex 项在主轴上的对齐。取值有 flex-start(默认)、flex-end、center、space-between、sapce-end。
- align-content: 定义了多根轴线的对齐方式,该属性对单行弹性盒子无效。取值:flex-start | flex-end | center | space-between | space-around | space-evenly | stretch
4.flex 项属性枚举
flex 项同样有六个属性:order | flex-grow | flex-shrink | flex-basis | flex | align-self
- order: 定义 flex 项的排列顺序,它的值是一个整数。由小到大,值越大排列越靠后。
- flex-grow: 定义项目如何放大,默认为零,为零时不放大。
- flex-shrink: 指定了从每个 flex 项中取出多少溢出量,以阻止它们溢出它们的容器。即指定元素的收缩规则(仅在默认宽度大于容器宽度时有效)
- flex-basis: 指定了 flex 项在容器中初始小。
- flex 是前面三个属性的缩写,即 flex: flex-grow flex-shrink flex-basis。
- align-self: 指定一个或多个 flex 项的对齐方式,覆盖 align-items 指定的对齐方式。取值有 auto | flex-start | flex-end | center | baseline | stretch
5.属性的应用
弹性盒允许嵌套,即一个弹性盒内部也可以有一个或多个弹性盒,这样就能灵活实现各种各样的布局。属性的应用就像卡牌游戏,面对不同的情况挑选不同的卡牌并按不同的顺序进行组合,y以此更好的达到自己的目的。
网友评论