流式布局(Block‐level)概念 - daniel-qa/Vue GitHub Wiki
在 CSS 中,流式布局(Flow Layout) 是指元素在页面中按照文档流(document flow)依次排列。元素的布局通常按照以下几种方式进行:
-
1 . 块级布局(Block-level Layout):元素会占据整个行的宽度,后续的元素会在其下方开始,通常具有上下外边距(margin)。
-
2 . 内联布局(Inline Layout):元素不会占据整行宽度,而是根据内容自适应宽度,多个内联元素可以在同一行内水平排列。
块级元素(Block-level elements),例如 < div>、< p>、< h1> 等,在页面中按顺序垂直排列。每个块级元素默认会占据一整行。
在 Element Plus 中, 组件是一个栅格容器,默认情况下,它的布局是基于 流式布局(block-level) 的,也就是每个 el-col 组件都会依照顺序占据一个新的“行”。
这种默认的流式布局行为使得每个 el-col 组件会占据容器的全宽,或者根据其 span 属性的值来设置占据的列数。
然而,当你为 设置 type="flex" 时,Flexbox 布局 被启用,变为 灵活的弹性布局,这时元素的对齐方式和排列方式由 Flexbox 决定,而不再是简单的流式排列。
- 1 .流式布局(默认的 block-level):
元素会根据文档流从上到下按顺序排列。 每个 el-col 会默认占据一定的空间并且垂直排列。 栅格系统(span)决定每个列占据的宽度,默认是 24 格栅格。
- 2 .Flexbox 布局(使用 type="flex"):
启用后,容器内的元素会根据 Flexbox 的属性进行排列。 justify 和 align 等属性可以控制主轴和交叉轴的对齐方式。 容器内的元素可以水平排列、垂直居中等。
例子:默认流式布局(block-level)
<el-row :gutter="20">
<el-col :span="6">
<div class="grid-content bg-purple">Column 1</div>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple">Column 2</div>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple">Column 3</div>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple">Column 4</div>
</el-col>
</el-row>
当我们在 上使用 type="flex" 时,Flexbox 布局会启用,允许更灵活的元素排列。
<el-row type="flex" justify="center" align="middle" :gutter="20">
<el-col :span="6">
<div class="grid-content bg-purple">Column 1</div>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple">Column 2</div>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple">Column 3</div>
</el-col>
<el-col :span="6">
<div class="grid-content bg-purple">Column 4</div>
</el-col>
</el-row>
- 默认的流式布局:
每个 el-col 默认会占据一个新的行,排列顺序从上到下。 如果你不指定 type="flex",那么 会将每个 el-col 作为 块级元素 排列。
启用 type="flex" 后:
使用 Flexbox 布局后, 的排列方式就不再是传统的流式排列,它可以根据 justify 和 align 属性来实现更灵活的排列。 justify: 控制水平对齐,常见的值有 start, center, space-between, space-around 等。 align: 控制垂直对齐,常见的值有 top, middle, bottom 等。
-
流式布局(block-level):是默认布局,元素按照文档流从上到下排列,每个元素会占据一整行的宽度。
-
Flexbox 布局:通过 type="flex" 启用,提供了更强大的对齐和排列能力,元素不再按顺序流动排列,可以控制排列的方向和对齐方式。