CSS 学习笔记 - 弹性布局

tech2024-11-23  19

CSS 学习笔记 - 弹性布局

弹性布局弹性容器flex-direction 主轴方向flex-wrap 元素换行规则justify-content 主轴上的对齐方式align-items交叉轴排列方式align-content多行时交叉轴排列方式 弹性元素flex-basis 设置元素在主轴上的初始大小align-self 交叉轴上的排列方式元素缩放flex-grow 扩展规则flex-shrink 收缩规则 order 控制元素排序 参考资料

弹性布局

Flexible_Box_Layout 弹性布局布局。弹性盒子声明:

块级弹性盒子:display: flex;行级弹性盒子:display: inline-flex;

演示效果:https://codepen.io/jerryjin/pen/ZEWqrOw

主轴:容器内元素方式的方向。交叉轴:垂直于主轴的方向。绝对定位:设置为绝对定位的元素不参与弹性布局。文本:文本节点受弹性布局控制。撑满剩余空间:设置了margin-< left | right >: auto;的元素可以平分剩余的间隙空间。

弹性容器

属性添加给说明flex-direction容器定义主轴的方向(row,column)正反方向(*-reverse)。内部元素如何分布flex-wrap容器指定 flex 元素是单行显示还是多行显示 。flex-flow容器flex-direction + flex-wrap例:flex-flow: row wrap 主:左>右,交:上>下例:row-reverse wrap-reverse 主:右>左,交:下>上justify-content容器分配顺着弹性容器主轴(或者网格行轴) 的元素之间及其周围的空间align-items容器控制元素在交叉轴上的排列方式align-content容器弹性容器设置为多行 and 当交叉轴上有多余的空间时,它控制元素如何对齐

flex-direction 主轴方向

flex-direction 应用于容器。定义主轴的方向(row,column)正反方向(*-reverse)。内部元素如何分布。

值说明row弹性容器的主轴被定义为与文本方向相同。 主轴起点和主轴终点与内容方向相同。row-reverse效果同row,只是反转了主轴起点和终点。(从右到左)column方向与row垂直。column-reverse效果同column,只是反转了主轴起点和终点(从下到上)

flex-wrap 元素换行规则

flex-wrap 如果设置为多行,这个属性还允许你控制行的堆叠方向。 如果设置为单行,则元素会在一行内被压缩。

值说明nowrap不换行wrap放不下就换行(正常从上往下)wrap-reverse效果同 wrap,开始和结束点反转。(从下往上换行) flex-flow:两个属性 flex-direction、flex-wrap两个属性合并简写。同时设置方向和换行。 flex-flow : row warp;

justify-content 主轴上的对齐方式

justify-content 应用于容器。分配顺着弹性容器主轴(或者网格行轴) 的元素之间及其周围的空间。

值示意元素:■空间:□说明flex-start^■■■□$从行首开始排列。每行第一个【弹性元素】与行首对齐,同时所有后续的【弹性元素】与前一个对齐。flex-end^□■■■$从行尾开始排列。每行最后一个【弹性元素】与行尾对齐,其他元素将与后一个对齐。center^□■■■□$元素从弹性容器中心开始。(每行第一个元素到行首的距离将与每行最后一个元素到行尾的距离相同)space-between^■□■□■$第一个靠头,最后一个靠尾,其它平分空间。space-around^□■□□■□□■□$剩余空间平分给每个元素,每个元素的空间平分给左右。space-evenly^□■□■□■□$边界到元素,元素到元素,的空间都相等。

align-items交叉轴排列方式

align-items 用于控制容器元素在交叉轴上的排列方式。

值说明stretch元素被拉伸以适应容器。center元素位于容器的中心flex-start元素位于容器的交叉轴开头flex-end元素位于容器的交叉轴结尾

align-content多行时交叉轴排列方式

align-content 弹性容器设置为多行,当交叉轴上有多余的空间时,它控制元素如何对齐。

选项说明stretch将空间平均分配给元素flex-start元素紧靠主轴起点flex-end元素紧靠主轴终点center元素从弹性容器中心开始space-between两头靠紧,中间平分。第一个元素靠起点,最后一个元素靠终点,余下元素平均分配空间space-around每个元素两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍space-evenly元素间距离平均分配

演示效果:https://codepen.io/jerryjin/pen/XWdxQRq 主轴排列方式 + 伪类选择器演示

弹性元素

属性添加给说明flex-basis元素设置元素在主轴上的初始大小align-self元素定义交叉轴方向、正反、分布flex-grow元素扩展规则flex-shrink元素收缩规则flex元素缩写:none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]order元素控制元素的位置,数值从小到大,取值期间 0和整数

flex-basis 设置元素在主轴上的初始大小

优先级大于 width、height。如果不使用 box-sizing 改变盒模型的话,那么这个属性就决定了 flex 元素的内容盒(content-box)的尺寸。

align-self 交叉轴上的排列方式

align-self 应用于元素上,控制元素自己身在交叉轴上的排列方式。与align-items 的区别在于 align-items 应用于容器上,控制的是容器中所有元素。 参数与 align-items 相同。

元素缩放

flex-grow 扩展规则

flex-grow 控制元素拉伸,当有剩余空间时,如何分配?权重值,按份数分即可。

优先级高于 height、width。常见的为 1 大家平分。未设置的元素不参与扩展。

flex-shrink 收缩规则

flex-shrink 控制在空间不够时咱们怎么缩? 缩放因子 = 需要收缩的总宽度 / (所有元素 * 自身flex-shrink)之和 * 自身flex-shrink 缩放宽度 = 自身宽度 * 缩放因子

演示效果:https://codepen.io/jerryjin/pen/BaKGBaR

order 控制元素排序

order 控制元素的位置,数值从小到大,取值期间 0和整数。

值相同时按照元素在源代码中出现的顺序排。只影响显示顺序,不影响逻辑顺序(可以tab键试试效果)

演示效果:https://codepen.io/jerryjin/pen/oNxadZV 显示顺序CBDA但逻辑上还是ABCD

参考资料

MDN:CSS 弹性盒子布局 MDN:CSS属性值定义语法

最新回复(0)