- 盒模型⼀共有两种模式,⼀种是标准模式,另⼀种就是怪异 模式
标准模式:盒子总宽度/高度=width/height+padding+border+margin
怪异模式:盒⼦总宽度/⾼度=width/height + margin = 内容 区宽度/⾼度 + padding + border + margin;
- box-sizing有两个值content-box 和 border-box .
box-sizing:content-box:将采⽤标准模式解析计 算,也是默认模式;
box-sizing:border-box:将采⽤怪异模式解析计算;
弹性盒
弹性盒⼦是 CSS3 的⼀种新的布局模式。又叫伸缩盒模型(Flexible Box)
最新版flex兼容
Chrome 加前缀 -webkit-flex
Firefox 加前缀 -moz-flex
IE 加前缀 -ms-flex
Opera 加前缀 -o-flex
标准 flex
flex整体介绍
- 容器默认存在两根轴:⽔平的主轴(main axis)和垂直的交叉轴 (cross axis)。
- 主轴的开始位置叫做main start,结束位置叫做main end;
- 交叉轴的开始位置叫做cross start,结束位置叫做cross end。
- 项⽬默认沿主轴排列。单个项⽬占据的主轴空间叫做main size,占据 的交叉轴空间叫做cross size。
弹性盒的基本属性
- 弹性盒⼦由弹性容器和弹性⼦元素组成。
弹性容器通过设置 display 属性的值为 flex(块元素布局) 或 inline-flex(⾏内元素布局)将其定义为弹性容器。
-
flex-direction 属性决定主轴的⽅向(即项⽬的排列⽅向)。
- row(默认值):主轴为⽔平⽅向,起点在左端。
- row-reverse:主轴为⽔平⽅向,起点在右端。
- column:主轴为垂直⽅向,起点在上沿。
- column-reverse:主轴为垂直⽅向,起点在下沿。
-
flex-wrap 属性定义,如果⼀条轴线排不下,如何换⾏。
- nowrap(默认):不换⾏。
- wrap:换⾏,第⼀⾏在上⽅。
- wrap-reverse:换⾏,第⼀⾏在下⽅。
flex-flow属性是flex-direction属性和flex-wrap属性的简写 形式,默认值为row nowrap。
-
justify-content 属性 定义了项⽬在主轴上的对齐⽅式,具体对齐⽅式与轴的⽅向有关。
- flex-start(默认值):左对齐
- flex-end:右对齐
- center: 居中
- space-between:两端对齐, 项⽬之间的间隔都相等。
- space-around:每个项⽬两侧的间隔相等。所以,项⽬之间的间隔⽐项⽬与 边框的间隔⼤⼀倍。
-
align-items 属性 定义项⽬在交叉轴上如何对齐,具体的对齐⽅式与交叉轴的⽅向有关
- flex-start:交叉轴的起点对齐。
- flex-end:交叉轴的终点对齐。
- center:交叉轴的中点对齐。
- baseline: 项⽬的第⼀⾏⽂字的基线对齐。
- stretch(默认值):如果项⽬未设置⾼度或设为auto,将占满整个容器的⾼ 度。
-
align-content 属性 ⽤于修改 flex-wrap 属性的⾏为。类似于 align-items, 但它不是设置弹性⼦ 元素的对齐,⽽是设置各个⾏的对齐。
- flex-start:与交叉轴的起点对齐。
- flex-end:与交叉轴的终点对齐。
- center:与交叉轴的中点对齐。
- space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
- space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔⽐轴 线与边框的间隔⼤⼀倍。
- stretch(默认值):轴线占满整个交叉轴。
容器中的条目
除了弹性盒布局模型中的容器之外,容器中的条目也可以通过 CSS 属性来改变其布局行为。
条目的顺序
order:自定义子元素的显示顺序值,越小越靠前条目尺寸的弹性
弹性盒布局模型的核心在于容器中条目的尺寸是弹性的。容器可以根据本身尺寸的大小来动态地调整条目的尺寸。当容器中有空白空间时,条目可以扩展尺寸以占据额外的空白空间;当容器中的空间不足时,条目可以缩小尺寸以防止超出容器范围。
条目尺寸的弹性由 2 个 CSS 属性来确定,分别是"flex-grow"和"flex-shrink"。
[ flex-grow ]:定义弹性盒⼦元素的扩展⽐率。他的值是一个没有单位的非负数,默认值是 1。
[ flex-shrink ]:定义弹性盒⼦元素的收缩⽐率。