Layout
媒体查询
由于 Bootstrap 是移动设备优先的,因此我们使用了一些 媒体查询(media queries) 功能来为我们的布局和视觉元素创建合理的断点。这些断点主要以最小的视口(viewport)宽度作为基准,并在视口尺寸改变时放大元素。
Grid
Bootstrap’s grid system uses a series of(一系列) containers, rows, and columns to layout(摆放布局) and align(对齐) content
三个class配合
container
包裹内容
Containers center and horizontally pad your content
row
用row分成若干行
col
用class="col"把一行分为若干块
<div class="container text-center border bg-primary-subtle"
style="--bs-border-color:var(--bs-primary-border-subtle)">
<div class="row bg-success-subtle">
<div class="col">
Column1
</div>
<div class="col">
Column2
</div>
</div>
<div class="row">
<div class="col">
Column3
</div>
<div class="col">
Column4
</div>
</div>
</div>
调整col的大小
利用col-num决定每块占有大小
数字越大占有越大
<div class="container text-center border bg-primary-subtle" style="--bs-border-color:var(--bs-primary-border-subtle)">
<div class="row bg-success-subtle">
<div class="col">
Column1
</div>
<div class="col-6 bg-danger-subtle">
Column2
</div>
<div class="col">
Column3
</div>
</div>
<div class="row">
<div class="col">
Column4
</div>
<div class="col-5 bg-danger-subtle">
Column5
</div>
<div class="col">
Column6
</div>
</div>
</div>
控制row大小
利用justify-content-md-center控制方位
<div class="row border justify-content-md-center">
<div class="col bg-success-subtle col-lg-2">
Column1
</div>
<div class="col-md-auto bg-danger-subtle">
Column2
</div>
<div class="col col-lg-2 bg-success-subtle">
Column3
</div>
</div>
按比例调整
利用col-sm-num的数字控制大小比例
<div class="container text-center bg-primary-subtle">
<div class="row bg-success-subtle">
<div class="col-sm-8 bg-danger-subtle">col-sm-8</div>
<div class="col-sm-4">col-sm-4</div>
</div>
<div class="row">
<div class="col-sm">col-sm</div>
<div class="col-sm text-bg-dark">col-sm</div>
<div class="col-sm">col-sm</div>
</div>
</div>
只写一个div实现多行
row-col-num的num表示一行里的列有多少个
例如我col写了4个然后num为2则表达每列两个所以两行共四列,grid会自动帮我生成两行的布局
<div class="container text-center">
<div class="row row-cols-2">
<div class="col bg-primary-subtle">
1
</div>
<div class="col bg-danger-subtle">
2
</div>
<div class="col bg-success-subtle">
3
</div>
<div class="col text-bg-dark">
4
</div>
</div>
</div>
可以填auto,但是一行默认有12格,会填不满
Columns
Learn how to modify(修改) columns with a handful of (各种)options for alignment(对齐), ordering(排序), and offsetting thanks to(多亏了) our flexbox grid system. Plus, see how to use column classes to manage widths of non-grid elements(非网格元素)
alignment
Use flexbox alignment(对齐) utilities to vertically and horizontally align columns
vertical alignment
这是指在一个container占据该区域的哪个空间(以flex完成)
<div class="p-3 bd-example-row bd-example-row-flex-cols">
<div class="container text-center">
<div class="row align-items-start">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
<div class="row align-items-center ">
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
<div class="col">
One of three columns
</div>
</div>
</div>
</div>
注意这个classes:bd-example-row-flex-cols
声明这个div是个row为flex布局的块
horizontal alignment
在水平方向上置于何位置
上图对应在row添加classes:justify-content-*
justify-content-start
justify-content-center
justify-content-end
justify-content-around
justify-content-between
justify-content-evenly
我们也可以单独调整col的位置
使用align-self-*
<div class="p-3 bd-example-row bd-example-row-flex-cols">
<div class="container text-center">
<div class="row">
<div class="col align-self-start">
One of three columns
</div>
<div class="col align-self-center">
One of three columns
</div>
<div class="col align-self-end">
One of three columns
</div>
</div>
</div>
</div>
即刻跳下一行
插入一行div的class为w-100直接跳转下一行
<div class="p-3 container text-center">
<div class="row">
<div class="col-6 col-sm-6 text-bg-warning">
.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3 text-bg-dark">
.col-6 .col-sm-3</div>
<!-- Force next columns to break to new line -->
<div class="w-100"></div>
<div class="col-6 col-sm-3 text-bg-warning">
.col-6 .col-sm-3</div>
<div class="col-6 col-sm-3 text-bg-dark">
.col-6 .col-sm-3</div>
</div>
</div>
Gutters
Gutters are the padding between your columns, used to responsively(响应地) space and align(使平行) content in the Bootstrap grid system.
horizontal gutters
在row上class:gx-num
num表达gutters的宽度,数值越高间隔越大,但是可能会溢出(overflow)所以我们在container限制padding,例如这里使用px-4,作为替代其实也可以使用.overflow-hidden
<div class="p-3 bd-example px-4 bd-example-cols">
<div class="container text-center">
<div class="row gx-5">
<div class="col">
<div class="p-3">Custom column padding</div>
</div>
<div class="col">
<div class="p-3">Custom column padding</div>
</div>
</div>
</div>
</div>
vertical gutters
那么对于垂直方向上的同理我们只需要在
row上classes:gy-num,其余同理
<div class="container overflow-hidden text-center">
<div class="row gy-5">
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
</div>
</div>
vertical & horizontal
把gx和gy融合为g则大功告成
<div class="container text-center">
<div class="row g-2">
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
<div class="col-6">
<div class="p-3">Custom column padding</div>
</div>
</div>
</div>
多一个实例
<div class="container text-center">
<div class="row row-cols-2 row-cols-lg-5 g-2 g-lg-3">
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
<div class="col">
<div class="p-3">Row column</div>
</div>
</div>
我想聊聊这个classes:row row-cols-2 row-cols-lg-5 g-2 g-lg-3
为了说明这个我们需要先了解Bootstrap的响应式布局
sm 平板大小(576px)
md 桌面显示器(768px)
lg 大桌面显示器(992px)
xl (1200px)
所以可以看出当页面大于lg时分布成一行五列,gutter设置为3,而当小于(不大于)这个大小时回到一行2列,间隔2px