河曲智叟 发表于 2024-9-11 20:52:36

少小白学前端——css篇(flex结构)

一、根本概念

flex结构,也就是常说的弹性结构,具有很强的灵活性,是一种常用结构方式,根本语法:
.box {
        display: flex;
        display: -webkit-flex; /* Safari */
}
其中,采用该样式的元素被称为容器(container),而它的子元素则称为item。
容器上默认有两根轴线:水平的主轴(main axis)和垂直的交织轴(cross axis),子元素item则根据轴线排列。
注意:利用flex结构时,子元素的float、clear和vertical-align属性将失效。
二、容器属性

容器有六个属性:
1.flex-direction:规定item的排列方向,其值有:


[*]row(默认值):主轴为水平方向,出发点在左端。
[*]row-reverse:主轴为水平方向,出发点在右端。
[*]column:主轴为垂直方向,出发点在上沿。
[*]column-reverse:主轴为垂直方向,出发点在下沿。
https://i-blog.csdnimg.cn/direct/5b9c420dc930484b9828dd1be16393c3.png https://i-blog.csdnimg.cn/direct/f093fe4c82bf48c691183253f046cff2.png https://i-blog.csdnimg.cn/direct/3d55ed045b514e67aa1403114de7bdde.png https://i-blog.csdnimg.cn/direct/1a6900c4720945a4b707c5b9a78e7026.png
2.flex-wrap:规定item一行放不下时,是否换行,其值有:


[*]nowrap(默认):不换行(会被压缩)。
[*]wrap:换行,第一行在上方(垂直方向会等分)。
[*]wrap-reverse:换行,第一行在下方。
https://i-blog.csdnimg.cn/direct/44ffc04d66fd4c71ba0d5bc3d5e7d4dd.png https://i-blog.csdnimg.cn/direct/270ac945b6484cc2aa0b04ca5768dbf0.png https://i-blog.csdnimg.cn/direct/72dd7c0f188843388f86ce71186f1a67.png
3.flex-flow:该属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。
.box {
flex-flow: <flex-direction> <flex-wrap>;
}
4.justify-content:该属性规定了item在主轴上的对齐方式,其值有:


[*]flex-start(默认值):左对齐
[*]flex-end:右对齐
[*]center: 居中
[*]space-between:两端对齐
[*]space-around:每个item两侧的间隔相当。(有点环绕居中的意味)
https://i-blog.csdnimg.cn/direct/ff5e904ce9434fbc8ff3eed4d1db5496.png https://i-blog.csdnimg.cn/direct/44ac4a8a972142b7ace584fab1cf66ae.png https://i-blog.csdnimg.cn/direct/fdec6115cd754d60bd9d0d7799d9e1ab.png https://i-blog.csdnimg.cn/direct/0e81aa8fddd24feaa4df9a2f43113368.png https://i-blog.csdnimg.cn/direct/6758ef2981d44067994cca568adb84d8.png
5.align-items:该属性规定了item在交织轴上的对齐方式,其值有:


[*]flex-start:交织轴的出发点对齐。
[*]flex-end:交织轴的尽头对齐。
[*]center:交织轴的中间点对齐。
[*]baseline: item的第一行文字的基线对齐。
[*]stretch(默认值):如果item未设置高度或设为auto,将占满整个容器的高度。
https://i-blog.csdnimg.cn/direct/09f6da20b7914a6fa0a18c80d88d0214.png https://i-blog.csdnimg.cn/direct/2443c9a0464c4b979f21d1749755db4a.png https://i-blog.csdnimg.cn/direct/0e727034970e4d19953809dedd2b8666.png https://i-blog.csdnimg.cn/direct/c9620d2552b8438681dca1c7a72b2d2f.png https://i-blog.csdnimg.cn/direct/c43a690ab57842b2a2ea8559d5e62a0a.png
6.align-content:规定了多条轴线时的对齐方式,单条轴线无作用,其值有:


[*]flex-start:与交织轴的出发点对齐。
[*]flex-end:与交织轴的尽头对齐。
[*]center:与交织轴的中间点对齐。
[*]space-between:与交织轴两端对齐,轴线之间的间隔平均分布。
[*]space-around:每根轴线两侧的间隔都相当。
[*]stretch(默认值):轴线占满整个交织轴(类似平分交织轴,然后顶端对齐)。
https://i-blog.csdnimg.cn/direct/0265dd7549804a828971e55cb821ccd7.png https://i-blog.csdnimg.cn/direct/124116347f8d40fd84f79ada223a4071.png https://i-blog.csdnimg.cn/direct/4ec78e4038e14da5a5f711b5c590a361.png https://i-blog.csdnimg.cn/direct/647919e549844e56b8566ee0c7c6345d.png https://i-blog.csdnimg.cn/direct/3e3559af0af04a9aa70b953db4f1ee40.png https://i-blog.csdnimg.cn/direct/8567ca509b454be78be2fafa2ed6f9f6.png
三、item的属性

1.order:定义item的排列顺序,数值越小,排列越靠前,默以为0。
2.flex-grow:定义item的放大比例,默以为0。
(条件是有剩余空间,无剩余空间不放大。另外,只设置一个item时,将会占满剩余空间,图左)
(图右flex-grow分别为2、1、0,item3的flex-grow为0,所以是默认宽度,剩余空间由item1和item2按2:1比列平分)
https://i-blog.csdnimg.cn/direct/e7db0f2eada042388b1873694e0b7016.png https://i-blog.csdnimg.cn/direct/8e0fb524035346abb8f221593e3fe47f.png
3.flex-shrink:定义了item的缩小比列,默以为1,负数无效。
(条件是空间不足,没有换行,默认全都缩小,图左。)
(图右:flex-shrink为0时,表现不缩小,如item1;item2为2,别的为默认值1)
https://i-blog.csdnimg.cn/direct/44ffc04d66fd4c71ba0d5bc3d5e7d4dd.png https://i-blog.csdnimg.cn/direct/45aa6f18cdc14f5eafd87dc689d6b071.png
4.flex-basis:规定item占据空间的巨细,默以为auto。
.item {
flex-basis: <length> | auto | content; /* default auto */
}
如果设为多少px(好比200px),则item将占据固定值(200px)的空间,跟设置width差不多。
如果设为content,则会根据内容设置巨细,下图item1和item2。
https://i-blog.csdnimg.cn/direct/ef7b998547984d2ba823be2daa0864bd.png
5.flex:该属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为“0 1 auto”,后两个属性可选。
.item {
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}
6.align-self:允许单个item有与其他item不一样的对齐方式,可覆盖align-items属性,默认值为auto。继承父元素的align-items属性,如果没有父元素,则等同于stretch。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
(下图item2值为flex-end,item3值为center )
https://i-blog.csdnimg.cn/direct/939cb156b7d74b84902e7209c8217e91.png
(大概就这样吧,截图好累啊!!!)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 少小白学前端——css篇(flex结构)