赞
踩
了解
在学习弹性布局之前首先就要明白其概念
flex 就是flexible box的缩写,意为弹性布局,用来为盒装模型提供最大的灵活性
任何一个容器都可以指定为flex布局
.box{ display: flex; }
行内元素当然也可以使用flex布局
.box{ display: inline-flex; }
注意一下:Webkit设为 Flex 布局以后,子元素的float、clear和vertical-align属性将失效。
基础概念
采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
容器属性(container)
row(默认值):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。
justify-content决定了flex item在main axis上的对齐方式
flex-start(默认值):与main start对齐
flex-end:与main end对齐
center:居中
space-between:flex items 之间的距离相等,与main start、main end两端对齐
space-evenly: flex items 之间的距离相等,flex items与main start 、main end 之间的距离等于flex items之间的距离
space-around :flex items 之间的距离相等,flex items与main start 、main end 之间的距离等于flex items之间的距离的一半
属性的目的主要就是为了排列main axis的item位置
决定flex items在cross axis上的对齐方式
normal:在弹性布局中,效果和stretch一样
stretch:前提是items不设置高度,当flex items 在cross axis 方向的size为auto时,会自动拉伸至填充flex container(或者换句话说:如果项目未设置高度或设为auto,将占满整个容器的高度。)
flex-satrt:与cross start 对齐
flex-end:与cross end 对齐
center:居中对齐
baseline:与基准线对齐
4. align-content
决定了多行flex items 在cross axis的对齐方式 用法与justify-content相似 一个是横轴。一个控制竖轴
stretch(默认值):与align-items的stretch类似,当items有高度的时候,无效果
flex-start:与cross start 对齐
flex-end :与cross end 对齐
center:居中对齐
space-between:flex items 之间的距离相等,与cross start、cross end两端对齐
space-evently: flex items 之间的距离相等,flex items与cross start 、cross end 之间的距离等于flex items之间的距离
space-around :flex items 之间的距离相等,flex items与cross start 、cross end 之间的距离等于flex items之间的距离的一半
5.flex-wrap
决定了flex container 是单行还是多行
nowrap(默认):单行
wrap:多行
(这个比较少用 wrap-reverse:多行(对比wrap,cross start 与cross end相反))
order 决定flex items的排布顺序 (用的不多)
可以设置为任意整数(正整数、负整数、0),值越小越排在前面
默认值为0
可以通过align-self 覆盖flex container 设置的align-items
auto(默认值):遵从flex container的align-items设置
stretch、flex-start、flex-end、center、baseline效果与align-items一致
决定了flex items如何扩展
可以设置为任意非父数字(小数,整数 0),默认为0
当flex container 在main axis方向上有剩余得size时,flex-grow属性才会有效
如果所有flex items 的flex-grow 综合sum不超过1,这直接乘以剩余size就是扩展大小、
如果超过1 扩展size=剩余size*flex-grow/sum
lex-shrink (shrink 缩小,收缩)与flex-grow相似,一个扩展,一个伸缩
可以设置为任意非父数字(小数,整数 0),默认为1
当flex items在main axis 方向上超过了flex container 的size flex-shrink属性才会生效、
如果所有flex items 的flex-shrink 总和sum超过1,每个flex item 收缩的size为:
flex item 超出flex container 的size*收缩比例/每个flex items 的收缩比例之和
如果sum不超过1,每个flex item 收缩的size为:
size = 超出的size * flex-shrink值
flex items收缩后的最终size不能小于min-widthmin-height
用来设置flex items 在 main axis方向上的base size
默认为auto,可以设置具体的宽度数值
决定flex items最终base size 的因素,优先级从高到低
max-widthmax-heightmin-widthmin-height
flex-basis
widthheight
内容本身的size
flex 是flex-grow || flex-shink||flex-basis的简写
可以指定1 2 3个值 依次按照上述顺序!默认值为 0 1 auto
将元素定义为网格容器,并为其内容建立新的 网格格式上下文。
grid :生成一个块级网格
inline-grid :生成一个内联网格
使用空格分隔的值列表,用来定义网格的列和行。这些值表示 网格轨道(Grid Track) 大小,它们之间的空格表示网格线。
通过引用 grid-area 属性指定的 网格区域(Grid Area) 名称来定义网格模板。重复网格区域的名称导致内容跨越这些单元格。一个点号(.
)代表一个空单元格。这个语法本身可视作网格的可视化结构
用于定义 [grid-template-rows
],[grid-template-columns
],[grid-template-areas
]简写属性。
none
:将所有三个属性设置为其初始值<grid-template-rows> / <grid-template-columns>
:将 [grid-template-columns
]和 [grid-template-rows
] 设置为相应地特定的值,并且设置[grid-template-areas
]指定网格线(grid lines)的大小。你可以把它想象为设置列/行之间间距的宽度。
grid-column-gap
和 grid-row-gap
的简写语法
值:
<grid-row-gap> <grid-column-gap>
:长度值
沿着 inline(行)轴线对齐网格项(grid items)(相反的属性是 align-items
沿着 block(列)轴线对齐)。此值适用于容器内的所有网格项。
沿着 block(列)轴线对齐网格项(grid items)(相反的属性是 justify-items
沿着 inline(行)轴线对齐)。此值适用于容器内的所有网格项。
place-items 是设置 align-items 和 justify-items 的简写形式。
<align-items> <justify-items>:第一个值设置 align-items 属性,第二个值设置 justify-items 属性。如果省略第二个值,则将第一个值同时分配给这两个属性。
有时,你的网格合计大小可能小于其 网格容器(grid container) 大小。 如果你的所有 网格项(grid items) 都使用像 px
这样的非灵活单位设置大小,就可能出现这种情况。在这种情况下,您可以设置网格容器内的网格的对齐方式。 此属性沿着 inline(行)轴线对齐网格(相反的属性是 align-content
,沿着 block(列)轴线对齐网格)。
值:
start
:将网格对齐到 网格容器(grid container) 的左侧起始边缘(左侧对齐)end
:将网格对齐到 网格容器 的右侧结束边缘(右侧对齐)center
:将网格对齐到 网格容器 的水平中间位置(水平居中对齐)stretch
:调整 网格项(grid items) 的宽度,允许该网格填充满整个 网格容器 的宽度space-around
:在每个网格项之间放置一个均匀的空间,左右两端放置一半的空间space-between
:在每个网格项之间放置一个均匀的空间,左右两端没有空间space-evenly
:在每个网格项目之间放置一个均匀的空间,左右两端放置一个均匀的空间有时,你的网格合计大小可能小于其 网格容器(grid container) 大小。 如果你的所有 网格项(grid items) 都使用像 px
这样的非灵活单位设置大小,就可能出现这种情况。在这种情况下,您可以设置网格容器内的网格的对齐方式。 此属性沿着 block(列)轴线对齐网格(相反的属性是 justify-content
,沿着 inline(行)轴线对齐网格)。
值:
start
:将网格对齐到 网格容器(grid container) 的顶部起始边缘(顶部对齐)end
:将网格对齐到 网格容器 的底部结束边缘(底部对齐)center
:将网格对齐到 网格容器 的垂直中间位置(垂直居中对齐)stretch
:调整 网格项(grid items) 的高度,允许该网格填充满整个 网格容器 的高度space-around
:在每个网格项之间放置一个均匀的空间,上下两端放置一半的空间space-between
:在每个网格项之间放置一个均匀的空间,上下两端没有空间space-evenly
:在每个网格项目之间放置一个均匀的空间,上下两端放置一个均匀的空间place-content 是设置 align-content 和 justify-content 的简写形式。
<align-content> <justify-content>:第一个值设置 align-content 属性,第二个值设置 justify-content 属性。如果省略第二个值,则将第一个值同时分配给这两个属性。
指定任何自动生成的网格轨道(grid tracks)(又名隐式网格轨道)的大小。当网格中的网格项多于单元格时,或者当网格项位于显式网格之外时,就会创建隐式轨道。
track-size>:可以是长度值,百分比,或者等份网格容器中可用空间的分数(使用 fr 单位)
注意:float,display: inline-block,display: table-cell,vertical-align 和 column-* 属性对网格项无效。
通过引用特定网格线(grid lines) 来确定 网格项(grid item) 在网格内的位置。 grid-column-start
/ grid-row-start
是网格项开始的网格线,grid-column-end
/ grid-row-end
是网格项结束的网格线。
值:
<line>
:可以是一个数字引用一个编号的网格线,或者一个名字来引用一个命名的网格线span <number>
:该网格项将跨越所提供的网格轨道数量span <name>
:该网格项将跨越到它与提供的名称位置auto
:表示自动放置,自动跨度,默认会扩展一个网格轨道的宽度或者高度分别为 grid-column-start
+ grid-column-end
和 grid-row-start
) + grid-row-end
的简写形式。
<start-line> / <end-line>
:每个网格项都接受所有相同的值,作为普通书写的版本,包括跨度为网格项提供一个名称,以便可以 被使用网格容器 grid-template-areas
属性创建的模板进行引用。 另外,这个属性可以用作grid-row-start
+ grid-column-start
+ grid-row-end
+ grid-column-end
的简写。
值:
沿着 inline(行)轴线对齐网格项( 相反的属性是 align-self
,沿着 block(列)轴线对齐)。此值适用于单个网格项内的内容。
值:
start
:将网格项对齐到其单元格的左侧起始边缘(左侧对齐)end
:将网格项对齐到其单元格的右侧结束边缘(右侧对齐)center
:将网格项对齐到其单元格的水平中间位置(水平居中对齐)stretch
:填满单元格的宽度(默认值)沿着 block(列)轴线对齐网格项(grid items)( 相反的属性是 justify-self
,沿着 inline(行)轴线对齐)。此值适用于单个网格项内的内容。
值:
start
:将网格项对齐到其单元格的顶部起始边缘(顶部对齐)end
:将网格项对齐到其单元格的底部结束边缘(底部对齐)center
:将网格项对齐到其单元格的垂直中间位置(垂直居中对齐)stretch
:填满单元格的高度(默认值)place-self 是设置 align-self 和 justify-self 的简写形式。
值:
auto – 布局模式的 “默认” 对齐方式。
<align-self> <justify-self>:第一个值设置 align-self 属性,第二个值设置 justify-self 属性。如果省略第二个值,则将第一个值同时分配给这两个属性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。