flex布局总结 flex布局属性有哪些
yuyutoo 2024-10-25 19:17 3 浏览 0 评论
从小到大,厚积薄发吧。继续总结下。
这次总结 CSS 中的 flex 布局。CSS(Cascading Style Sheets)层叠样式表,可别作为一个玩家连这个都不知道或记不住。
将 flex 布局,我想从 CSS 的盒子模型讲起。我所知道的有 3 种,W3C 标准盒模型、IE 怪异盒模型和今天的主角弹性盒模型(姑且算吧)。
盒模型是 CSS 技术所使用的一种思维模型,在一个网页文档中,所有 HTML 元素都可以看作盒子。我们按规则地将盒子进行摆放,搭建出网页的结构。一个盒模型包括外边距 margin、边框 border、内边距 padding、实际内容 content 四个属性。
W3C 盒模型的 width 和 height 只包含 content。
IE 盒模型(IE6 以下)的 width 和 height 包含 content + padding + border。这其实更便于我们布局的计算,所以越来越倾向于通过设置 box-sizing:border-box 来指定为 IE 盒模型,默认为 content-boxW3C 盒模型。
CSS3 中推出了弹性盒子 Flex Box,一种新的布局模式 CSS Flexible Box Layout Module。用于在单个维度(行或列)中显示项目的布局模型。旨在提供一个更有效地布局、对齐方式,并且能够使容器中的子元素大小未知或动态变化情况下仍然能够分配好子元素之间的空间。目前已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。
弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。通过设置 display 属性的值为 flex 或 inline-flex 将其定义为弹性容器。容器内包含了一个或多个弹性子元素。设为 flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。
flexbox 布局与方向无关,不同于常规布局(基于垂直的块 block 和基于水平的内联 inline),而是基于弹性流动方向 flex-flow,最适合应用程序的组件和小规模布局。容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。
容器的属性:
flex-direction:决定主轴的方向。
flex-direction: row | row-reverse | column | column-reverse;
flex_wrap:如果一条轴线排不下,如何换行。
flex-wrap: nowrap | wrap | wrap-reverse;
flex_flow:是flex-direction和flex-wrap属性的简写。默认值为row nowrap.
flex-flow: <flex-direction> || <flex-wrap>;
justify-content:属性定义了项目在主轴上的对齐方式。
justify-content: flex-start | flex-end | center | space-between | space-around;
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
align-items:属性定义项目在交叉轴上如何对齐。
align-items: flex-start | flex-end | center | baseline | stretch;
baseline: 项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为 auto,将占满整个容器的高度。
align-contnet:属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
项目的属性:
order:属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
order: <integer>;
flex-grow:属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
flex-grow: <number>;
当前项可分得的剩余空间 = ( 当前项flex-grow值/所有项flex-grow值之和 ) * 剩余总宽度
flex-shrink:属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
flex-shrink: <number>;
当前项收缩的宽度 = (当前项flex-shrink * 当前项flex-basis)/(所有项 flex-shrink 与各自flex-basis乘积之和) * 需收缩的总宽度
flex-basis:属性定义了在分配多余空间之前,项目占据的主轴空间。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为 auto,即项目的本来大小。
flex-basis: <length> | auto;
auto 的意思是首先看当前项有没有明确设置宽度,如果有则使用该宽度;如果没有,则以包含的内容决定宽度。
content 是不管当前项是否明确设置了宽度,一律以内容决定宽度。
flex:flex-grow, flex-shrink 和 flex-basis 的简写,默认值为 0 1 auto。
flex: none | [ <‘flex-grow’> <‘flex-shrink’>? || <‘flex-basis’> ]
该属性有两个快捷值:auto (1 1 auto) ,none (0 0 auto),1(0 0 0%)。
建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。
align-self:属性允许单个项目有与其他项目不一样的对齐方式,可覆盖 align-items 属性。默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 stretch。
align-self: auto | flex-start | flex-end | center | baseline | stretch; flex 布局经典应用,宽度等分,高度等分,间隔等分等。
<section>
<nav>
<ul>
<li><a href="#">科技</a></li>
<li><a href="#">新能源</a></li>
<li><a href="#">农业</a></li>
<li id="right"><a href="#">有色金属</a></li>
</ul>
</nav>
</section>
section{
border: 1px solid red;
}
nav ul {
display: flex;
justify-content: space-between;
margin: 0 -10px;
padding: 0;
}
li{
list-style: none;
margin: 0 10px;
padding: 0;
}
a {
text-decoration: none;
color: #000;
border: 2px solid rgb(96, 139, 168);
border-radius: 5px;
background-color: rgba(96, 139, 168, .2);
padding: 10px;
display: block;
}
#right {
/*
'margin-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' +'border-right-width' + 'margin-right' = width of containing block
当其中一个属性值为 auto 时,需满足上述规则。所以能够使得元素右对齐。常见的 margin:0 auto,能够使得元素水平居中也是基于此规则。
*/
margin-left: auto;
}
<section>
<div id="content">
<p>This card has a lot more content which means that it defines the height of the container the cards are in. I've laid the cards out using grid layout, so the cards themselves will stretch to the same height.</p>
</div>
<div id="content">
<p>This card has a lot more content which means that it defines the height of the container the cards are in. I've laid the cards out using grid layout, so the cards themselves will stretch to the same height.</p>
</div>
<div id="content">
<p>This card has a lot more content which means that it defines the height of the container the cards are in. I've laid the cards out using grid layout, so the cards themselves will stretch to the same height.</p>
</div>
</section>
section{
border: 1px solid red;
display: flex;
flex-flow: column;
height: 600px;
}
#content{
flex: 1;
}
总结的并不太好,不过还是留存吧。主要是要了解 flex 伸缩性以及复合属性的计算。
原文地址:https://zzfd.github.io/2021/02/22/flex 布局总结
参考资料:如有侵权,请告知,将第一时间删除部分内容。
https://blog.csdn.net/Hotice888/article/details/105551724?share_token=4b815afc-49f3-445d-9a44-f39fdafc7bec
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
https://developer.mozilla.org/zh-CN/docs/Glossary/Flexbox
相关推荐
- 史上最全的浏览器兼容性问题和解决方案
-
微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(页底留言开放,欢迎来吐槽)●●●...
-
- 平面设计基础知识_平面设计基础知识实验收获与总结
-
CSS构造颜色,背景与图像1.使用span更好的控制文本中局部区域的文本:文本;2.使用display属性提供区块转变:display:inline(是内联的...
-
2025-02-21 16:01 yuyutoo
- 写作排版简单三步就行-工具篇_作文排版模板
-
和我们工作中日常word排版内部交流不同,这篇教程介绍的写作排版主要是用于“微信公众号、头条号”网络展示。写作展现的是我的思考,排版是让写作在网格上更好地展现。在写作上花费时间是有累积复利优势的,在排...
- 写一个2048的游戏_2048小游戏功能实现
-
1.创建HTML文件1.打开一个文本编辑器,例如Notepad++、SublimeText、VisualStudioCode等。2.将以下HTML代码复制并粘贴到文本编辑器中:html...
- 今天你穿“短袖”了吗?青岛最高23℃!接下来几天气温更刺激……
-
最近的天气暖和得让很多小伙伴们喊“热”!!! 昨天的气温到底升得有多高呢?你家有没有榜上有名?...
- CSS不规则卡片,纯CSS制作优惠券样式,CSS实现锯齿样式
-
之前也有写过CSS优惠券样式《CSS3径向渐变实现优惠券波浪造型》,这次再来温习一遍,并且将更为详细的讲解,从布局到具体样式说明,最后定义CSS变量,自定义主题颜色。布局...
- 你的自我界限够强大吗?_你的自我界限够强大吗英文
-
我的结果:A、该设立新的界限...
- 行内元素与块级元素,以及区别_行内元素和块级元素有什么区别?
-
行内元素与块级元素首先,CSS规范规定,每个元素都有display属性,确定该元素的类型,每个元素都有默认的display值,分别为块级(block)、行内(inline)。块级元素:(以下列举比较常...
-
- 让“成都速度”跑得潇潇洒洒,地上地下共享轨交繁华
-
去年的两会期间,习近平总书记在参加人大会议四川代表团审议时,对治蜀兴川提出了明确要求,指明了前行方向,并带来了“祝四川人民的生活越来越安逸”的美好祝福。又是一年...
-
2025-02-21 16:00 yuyutoo
- 今年国家综合性消防救援队伍计划招录消防员15000名
-
记者24日从应急管理部获悉,国家综合性消防救援队伍2023年消防员招录工作已正式启动。今年共计划招录消防员15000名,其中高校应届毕业生5000名、退役士兵5000名、社会青年5000名。本次招录的...
- 一起盘点最新 Chrome v133 的5大主流特性 ?
-
1.CSS的高级attr()方法CSSattr()函数是CSSLevel5中用于检索DOM元素的属性值并将其用于CSS属性值,类似于var()函数替换自定义属性值的方式。...
- 竞走团体世锦赛5月太仓举行 世界冠军杨家玉担任形象大使
-
style="text-align:center;"data-mce-style="text-align:...
- 学物理能做什么?_学物理能做什么 卢昌海
-
作者:曹则贤中国科学院物理研究所原标题:《物理学:ASourceofPowerforMan》在2006年中央电视台《对话》栏目的某期节目中,主持人问过我一个的问题:“学物理的人,如果日后不...
-
- 你不知道的关于这只眯眼兔的6个小秘密
-
在你们忙着给熊本君做表情包的时候,要知道,最先在网络上引起轰动的可是这只脸上只有两条缝的兔子——兔斯基。今年,它更是迎来了自己的10岁生日。①关于德艺双馨“老艺...
-
2025-02-21 16:00 yuyutoo
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)