第一章 Bootstrap 概述
Bootstrap 是一个 HTML、CSS 和 JS 框架,基于jQuery框架。
用于开发响应式布局、移动设备优先的 WEB 项目。
特色: 1.响应式布局 2.基于flex的栅格系统 3.丰富的组件和工具方法 4.常见交互使用
在<head></head>
标签中引入bootstrap.css文件:
1 | <link rel="stylesheet" href="./bootstrap-4.5.0/dist/css/bootstrap.css" /> |
0x01.CSS文件
Bootstrap包含一些选项,可以包含部分或全部已编译的CSS。
CSS文件 | 布局 | 内容 | 组件 | 实用工具 |
---|---|---|---|---|
bootstrap.css bootstrap.min.css |
已包含 | 已包含 | 已包含 | 已包含 |
bootstrap-grid.css bootstrap-grid.min.css |
唯一的网格系统 | 不包含 | 不包含 | 仅Flex实用程序 |
bootstrap-reboot.css bootstrap-reboot.min.css |
不包含 | 仅重启 | 不包含 | 不包含 |
0x02.JS文件
JS文件 | Popper | jQuery |
---|---|---|
bootstrap.bundle.js bootstrap.bundle.min.js |
已包含 | 不包含 |
bootstrap.js bootstrap.min.js |
不包含 | 不包含 |
第二章 布局
0x01.container
容器是Bootstrap中最基本的布局元素,在使用我们的默认网格系统时,容器是必需的。容器用于在其中容纳,填充和(有时)使内容居中。尽管可以嵌套容器,但是大多数布局不需要嵌套容器。
Bootstrap带有三个不同的容器:
.container
,它max-width
在每个响应断点处设置一个.container-fluid
,这是width: 100%
所有断点.container-{breakpoint}
,width: 100%
直到指定的断点为止
下表说明了每个容器max-width
与原始容器.container
以及.container-fluid
每个断点之间的比较。
特小 <576px | 小 ≥576px | 中 ≥768px | 大 ≥992px | 特大 ≥1200px | |
---|---|---|---|---|---|
.container |
100% | 540px | 720px | 960px | 1140px |
.container-sm |
100% | 540px | 720px | 960px | 1140px |
.container-md |
100% | 100% | 720px | 960px | 1140px |
.container-lg |
100% | 100% | 100% | 960px | 1140px |
.container-xl |
100% | 100% | 100% | 100% | 1140px |
.container-fluid |
100% | 100% | 100% | 100% | 100% |
我们默认的.container
类是响应式,固定宽度的容器,这意味着它max-width
在每个断点处都会发生变化。
1 | <div class="container"> |
使用.container-fluid
实现通栏,跨越视口的整个宽度。
1 | <div class="container-fluid"> |
响应容器是Bootstrap v4.4中的新增功能。它们允许您指定100%宽的类,直到达到指定的断点为止,此后,我们max-width
对每个较高的断点应用。例如,.container-sm
100%宽开始直到sm
到达断点,在那里将扩大同md
,lg
和xl
。
1 | <div class="container-sm">100% wide until small breakpoint</div> |
0x02.响应节点(断点)
Bootstrap主要在源Sass文件中为布局,栅格系统和组件使用以下媒体查询范围(或断点)。
1 | // Extra small devices (portrait phones, less than 576px) |
所有媒体查询都可以通过Sass mixins获得:
1 | // No media query necessary for xs breakpoint as it's effectively `@media (min-width: 0) { ... }` |
媒体查询可能跨越多个断点宽度:
1 | // Example |
bootstrap.css中CSS代码:
1 | .container { |
0x03.Z-index
一些Bootstrap组件利用z-index的CSS属性,该CSS属性通过提供第三个轴来安排内容来帮助控制布局。Bootstrap中使用默认的z-index比例尺旨在适当地分层导航,工具提示和弹出窗口,模态等。
1 | $zindex-dropdown: 1000 !default; |
为了处理重叠的组件(例如,按钮和输入组的输入)内的边界中,使用低单数位z-index的值1,2和3用于默认,悬停状态和活动状态。在悬停/焦点/活动上,我们将具有较高z-index值的特定元素置于最前列,以显示其在同级元素上的边界。
第三章 栅格系统
借助十二列的栅格系统,五个默认响应层,Sass变量和mixin以及数十个预定义类,使用Flexbox网格构建各种形状和大小的布局。
0x01.平分三列
1 | <div class="container"> |
- 容器提供了一种使您的网站内容居中和水平填充的方法。使用
.container
了应答像素宽度或.container-fluid
用于width: 100%
在所有视窗和器件尺寸。 - 行是列的包装。每列都有水平
padding
(称为装订线),用于控制它们之间的间距。padding
然后在具有负边距的行上抵消此错误。这样,列中的所有内容在视觉上都在左侧向下对齐。 - 在网格布局中,必须将内容放置在列中,并且只有列可以是行的直接子代。
- 多亏了flexbox,没有指定的网格列
width
将自动按等宽列布局。 - 列类表示每行可能使用的12列中的列数。因此,如果您要横穿三个等宽的列,则可以使用
.col-4
。 - 列
width
s以百分比设置,因此相对于其父元素,它们始终是可变的且大小合适。 - 列具有水平
padding
创建单独的列之间的排水沟,然而,你可以删除margin
从行,padding
从列与.no-gutters
上.row
。 - 为了使网格响应,有五个网格断点,每个响应断点一个:所有断点(超小),小,中,大和特大。
- 网格断点基于最小宽度的媒体查询,这意味着它们适用于该断点及其上方的所有断点(例如,
.col-sm-4
适用于小型,中型,大型和超大型设备,但不适用于第一个xs
断点)。 - 可以使用预定义的网格类(如
.col-4
)或Sass mixins获得更多的语义标记。
*注意flexbox的局限性和错误,例如:无法将某些HTML元素用作flex容器。
本节示例:
代码:
1 |
|
0x02.Grid options
Bootstrap使用ems或rems来定义大多数大小,而px s 则用于网格断点和容器宽度。这是因为视口宽度以像素为单位,并且不会随字体大小而变化。
Extra small <576px | Small ≥576px | Medium ≥768px | Large ≥992px | Extra large ≥1200px | |
---|---|---|---|---|---|
Max container width | None (auto) | 540px | 720px | 960px | 1140px |
Class prefix | .col- |
.col-sm- |
.col-md- |
.col-lg- |
.col-xl- |
# of columns | 12 | ||||
Gutter width | 30px (15px on each side of a column) | ||||
Nestable | Yes | ||||
Column ordering | Yes |
0x03.自动布局列 响应式
利用特定于断点的列类来轻松调整列大小,而无需使用显式编号的类。如:.col-sm-6
。
1 |
|
0x04.Alignment
使用flexbox对齐工具可垂直和水平对齐列。当flex容器具有min-height
如下所示的内容时,Internet Explorer 10-11不支持flex项的垂直对齐。
垂直对齐:
1 | <div class="container"> |
1 | <div class="container"> |
水平对齐:
1 | <div class="container"> |
0x05.重新排序
使用.order-
类来控制内容的视觉顺序。
这些类是响应式的,因此您可以order
按断点设置(例如.order-1.order-md-2
)。包括支持1通过12所有五格层。
1 | <div class="container"> |
还有响应式.order-first
和.order-last
类分别order
通过应用order: -1
和order: 13
(order: $columns + 1
)来更改元素的。这些类也可以.order-*
根据需要与编号的类混合。
抵消列:可以通过两种方式偏移网格列:响应.offset-
网格类和边距实用程序。
网格类的大小可匹配列,而边距对于偏移宽度可变的快速布局更有用。
使用.offset-md-*
类将列向右移动。这些类逐*
列增加一列的左边距。例如,.offset-md-4
移至.col-md-4
四列。
1 | <div class="container"> |
随着v4中向flexbox的迁移,可以使用margin实用程序,例如,.mr-auto
将同级列彼此拉开。
1 | <div class="container"> |
第四章 content
0x01.重置默认样式
单个文件中特定于元素的CSS更改的集合,使用kickstart Bootstrap提供一个优雅,一致且简单的基准。
重置默认样式建立在Normalize的基础上,仅使用元素选择器即可为许多HTML元素提供一些样式。其他样式仅对类进行。例如,重置了一些<table>
样式以简化基线,然后提供.table
,.table-bordered
等等。
0x02.预格式化文字
<pre>
重置该元素以删除其元素并将其 margin-top
使用 rem
单位 margin-bottom
。
1 | .example-element { |
0x03.表格 表单
表格已针对样式 <caption>
s 进行了略微调整,并折叠了边框,并确保整体一致 text-align
。为边框,填充其他的变化,更配备了.table
类。
表单重新引导了各种表单元素,以简化基本样式。以下是一些最值得注意的更改:
<fieldset>
s没有边界,填充或边距,因此可以轻松用作单个输入或输入组的包装。<legend>
与字段集一样,s也已重新设置样式以显示为各种标题。<label>
设置为display: inline-block
允许margin
应用。<input>
s,<select>
s,<textarea>
s和<button>
s 主要由Normalize解决,但是Reboot也删除了它们margin
和setline-height: inherit
。<textarea>
将s修改为只能垂直调整大小,因为水平调整大小通常会“破坏”页面布局。<button>
s和<input>
button元素具有cursor: pointer
[:not(:disabled)
]。
第五章 组件
0x01.Alerts
适用于任何长度的文本,以及可选的关闭按钮。为了获得适当的样式,请使用八个必需的上下文类之一(例如.alert-success
)。
1 | <div class="alert alert-primary" role="alert"> |
使用.alert-link
实用程序类可在任何警报中快速提供匹配的彩色链接。
1 | <div class="alert alert-primary" role="alert"> |
0x02.徽章
徽章通过使用相对字体大小和 em
单位来缩放以匹配直接父元素的大小。
1 | <h1>标题示例 <span class="badge badge-secondary">新</span></h1> |
徽章可以用作链接或按钮的一部分,以提供计数器。
1 | <button type="button" class="btn btn-primary"> |
注意:根据使用方式的不同,徽章可能会使屏幕阅读器和类似辅助技术的用户感到困惑。虽然徽章的样式提供了有关其用途的视觉提示,但将仅向这些用户显示徽章的内容。根据具体情况,这些标记在句子,链接或按钮的末尾可能看起来像是随机附加的单词或数字。除非上下文清楚(如“通知”示例一样,理解为“ 4”是通知的数量),否则需要考虑在视觉上隐藏的附加文本中包含附加上下文。
可以添加下面提到的任何修饰符类,以更改徽章的外观。
1 | <span class="badge badge-primary">Primary</span> |
使用.badge-pill
修饰符类使徽章更圆(具有更大border-radius
和更多的水平padding
)。
1 | <span class="badge badge-pill badge-primary">Primary</span> |
.badge-*
在<a>
元素上使用上下文类可以快速提供具有悬停和焦点状态的可操作徽章。
1 | <a href="#" class="badge badge-primary">Primary</a> |
0x03.面包屑
指示当前页面在导航层次结构中的位置,该层次结构会通过CSS自动添加分隔符。
1 | <nav aria-label="breadcrumb"> |
分隔符通过::before
和自动添加到CSS中content
。可以通过更改来更改它们$breadcrumb-divider
。需要使用quote函数生成字符串周围的引号,因此,如果要 >
用作分隔符,可以使用以下命令:
1 | $breadcrumb-divider: quote(">"); |
可以通过设置$breadcrumb-divider
为来删除分隔符none
:
1 | $breadcrumb-divider: none; |
由于面包屑提供了导航,因此最好添加一个有意义的标签,例如aria-label="breadcrumb"
描述<nav>
元素中提供的导航的类型,并在aria-current="page"
集合的最后一项上应用,以指示它表示当前页面。
0x04.按钮 按钮组
将Bootstrap的自定义按钮样式用于表单,对话框等中的操作,并支持多种尺寸,状态等。
Bootstrap包括几种预定义的按钮样式,每种样式都有其自己的语义目的,并添加了一些其他控件,以进行更多控制。
1 | <button type="button" class="btn btn-primary">Primary</button> |
通过按钮组将一系列按钮分组在一起,并使用JavaScript对它们进行超级处理。
1 | <div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups"> |
1 | <div class="btn-group" role="group" aria-label="Button group with nested dropdown"> |
第六章 Utilities
0x01.边框
1 | <span class="border"></span> |
1 | <span class="border border-primary"></span> |
0x02.Clearfix
通过添加clearfix实用程序,可以快速轻松地清除容器中的浮动内容。
float
通过添加.clearfix
到父元素轻松清除。也可以用作mixin。
1 | <div class="clearfix">...</div> |
1 | // Mixin itself |
以下示例显示了如何使用clearfix。如果没有clearfix,则环绕div不会在按钮周围散开,这会导致布局损坏。
1 | <div class="bg-info clearfix"> |
0x03.关闭按钮
1 | <button type="button" class="close" aria-label="Close"> |
0x04.颜色
1 | <p class="text-primary">.text-primary</p> |
注意:.text-white
和.text-muted
类除了下划线外没有其他链接样式。
1 | <div class="p-3 mb-2 bg-primary text-white">.bg-primary</div> |
0x05.显示
隐藏元素:
为了更快地进行移动友好型开发,可使用响应式显示类来按设备显示和隐藏元素。避免为同一网站创建完全不同的版本,而应针对每个屏幕尺寸相应地隐藏元素。
要隐藏元素,只需对任何响应屏幕变化使用.d-none
该类或这些类之一即可.d-{sm,md,lg,xl}-none
。
要仅在给定的屏幕尺寸间隔上显示元素,可以将一个.d-*-none
类与一个.d-*-*
类结合使用,例如,.d-none .d-md-block .d-xl-none
将隐藏所有屏幕尺寸的元素,但在中型和大型设备上除外。
屏幕尺寸 | 类 |
---|---|
隐藏在所有 | .d-none |
仅在xs上隐藏 | .d-none .d-sm-block |
仅在sm上隐藏 | .d-sm-none .d-md-block |
仅在md上隐藏 | .d-md-none .d-lg-block |
仅在LG隐藏 | .d-lg-none .d-xl-block |
仅在xl上隐藏 | .d-xl-none |
所有人可见 | .d-block |
仅在xs上可见 | .d-block .d-sm-none |
仅在sm上可见 | .d-none .d-sm-block .d-md-none |
仅在md上可见 | .d-none .d-md-block .d-lg-none |
仅在LG上可见 | .d-none .d-lg-block .d-xl-none |
仅在xl上可见 | .d-none .d-xl-block |
0x06.定位
使用这些速记实用程序可以快速配置元素的位置。
1 | <div class="position-static">...</div> |
0x07.阴影
使用box-shadow实用程序向元素添加或删除阴影。
虽然默认情况下在Bootstrap中禁用了组件的阴影,并且可以通过启用$enable-shadows
阴影,但也可以使用我们的box-shadow
实用程序类快速添加或删除阴影。包括对.shadow-none
和三种默认大小(具有匹配的关联变量)的支持。
1 | <div class="shadow-none p-3 mb-5 bg-light rounded">没有阴影</div> |
##参考 Bootstrap官方文档 菜鸟教程 B站视频BV1r64y1T7J8 UP @千锋教育