在GitHub上查看
迁移到Bootstrap 5
跟踪并查看对Bootstrap源文件,文档和组件的更改,可以快速的从v4迁移到v5。
本页导航↓
版本 v5.0.1
RTL 文字大小重置
RTL现在还处于试验的阶段,可能会根据用户的反馈进行发展。如果你有什么 建议 也可以告诉我们
Sass
Sass变量、功能工具和mixin被重新命名为更具有逻辑性的名称,如: start 和 end 代替 left 和
right。
组件
- 将
.dropleft和.dropright重命名为.dropstart和dropend。 - 将
.dropdown-menu-*-left和.dropdown-menu-*-right和.dropright重命名为.dropdown-menu-*-start和.dropdown-menu-*-end。 - 将
.bs-popover-left和.bs-popover-right重命名为.bs-popover-start和.bs-popover-end。 - 将
.bs-tooltip-left和.bs-tooltip-right重命名为.bs-tooltip-start和.bs-tooltip-end。 - 将
.carousel-item-left和.carousel-item-right重命名为.carousel-item-start和.carousel-item-end。
对齐
- 将
.left-*和.right-*重命名为.start-*和.end-*. - 将
.float-left和.float-right重命名为.float-start和.float-end. - 将
.border-left和.border-right重命名为.border-start和.border-end. - 将
.rounded-left和.rounded-right重命名为.rounded-start和.rounded-end. - 将
.ml-*和.mr-*重命名为.ms-*和.me-*. - 将
.pl-*和.pr-*重命名为.ps-*和.pe-*. - 将
.text-left和.text-right重命名为.text-start和.text-end.
因此,特定于断点的变量也被重命名(例如, .text-md-start 被替换成 .text-md-left)。
混合组件
- 将
border-left-radius()andborder-right-radius()重命名为border-start-radius()andborder-end-radius()以及它们的边角变量(例如.border-bottom-left-radius半径变为.border-bottom-start-radius。 - 将
caret-left()和caret-right()重命名为caret-start()和caret-end()而且,caret()mixin 现在将start和end作为参数,而不是left和right。
变量
- 如果你在RTL中需要一个不同的面包屑分隔符,那么你可以创建一个新的
$breadcrumb-divider-flipped。 - 将
$navbar-brand-margin-right重命名为$navbar-brand-margin-end. - 将
$pagination-margin-left重命名为$pagination-margin-start. - 将
$form-check-padding-left重命名为$form-check-padding-start. - 将
$form-switch-padding-left重命名为$form-switch-padding-start. - 将
$form-check-inline-margin-right重命名为$form-check-inline-margin-end. - 将
$form-select-feedback-icon-padding-right重命名为$form-select-feedback-icon-padding-end.
JavaScript 脚本
- 所有JavaScript插件的数据属性现在都有命名空间,你可以快速的将bootstrap、第三方以及你自己的代码区分开来。例如,bootstrap使用
data-bs-toggle而不是data-toggle。 - 更新 Popper 至 v2.x:
- bootstrap的工具提示(Tooltip)/弹出框(Popover)和下拉菜单(Dropdown)删除了
offset选项;但是依然 可以使用popperConfig参数来实现 -
fallbackPlacement选项已将变成了fallbackPlacements.
- bootstrap的工具提示(Tooltip)/弹出框(Popover)和下拉菜单(Dropdown)删除了
Sass
-
将
scale-color()函数重命名为shift-color(),以避免与Sass自己的颜色缩放函数冲突。
实用工具
-
添加了新的
.translate-middle-x和.translate-middle-y实用工具,用以水平或垂直居中绝对/固定定位元素。
组件
面包屑导航
-
通过删除
padding,background-color和border-radius填充,简化了面包屑导航的默认外观, -
添加了新的CSS自定义属性
--bs-breadcrumb-divider,无需重新编译CSS即可轻松自定义。
弹出框
版本 v5.0.0-alpha3
不支持IE浏览器
- 放弃了对微软Edge Legacy的支持。在这里可以看到以前浏览器支持的变化。
Sass
-
使用
color-level()和$theme-color-interval的颜色系统被删除,取而代之的是新的颜色系统。 代码库中所有的lighten()和darken()函数都被tint-color()和shade-color()所取代。这些功能可以将混合颜色与白色或黑色,而不是改变其亮度的固定数量。scale-color()(在Beta 1中更改为shift-color())将根据其权重参数是正还是负使颜色变浅或变暗。更多细节请参见 #30622。 -
旋转器现在可以通过减慢动画速度来使用
prefers-reduced-motion: reduce,请参见 #31882 。
重新启动
-
引入
$enable-smooth-scroll,它应用于scroll-behavior: smooth,除非用户通过prefers-reduced-motion媒体查询请求简化运动。 请参阅 #31877
按钮
- 删除了
.btn-block,支持CSS网格实用工具类。 不再把.btn-block应用到单个按钮上,一组按钮现在被包裹在一个父类.d-grid中,并且可以使用.gap-*实用工具来设置间距。单个“按钮块”,可以添加.w-100。
表单
-
通过向带有验证的输入组中添加额外的
.has-validation类,最终修复了带有验证反馈的输入组上长期缺少的边框半径的错误。 - 将浮动标签示例提升为完全支持的表单组件。 请参阅新的浮动标签页面。
-
文件输入现在使用
.form-control类,不需要JavaScript、额外的HTML或额外的类。 请参阅 #31955。 - 添加
cursor:pointer到.form-control-color颜色输入框中.
实用工具
- 文本实用工具:
-
增加了实用工具(启用了RFS)
.fs-*给font-size。它们使用与HTML默认标题相同的比例(1-6,从大到小),并且可以通过Sass map进行修改。 - 为了简洁和一致,将
.font-weight-*实用工具重命名为.fw-* - 为了简洁和一致,将
.font-style-*实用工具重命名为.fst-*。
-
增加了实用工具(启用了RFS)
- 添加了
.d-grid来显示实用工具 - 为CSS网格布局添加了新的
gap实用工具(.gap)
版本 v5.0.0-alpha2
Sass
-
为每个
border-radius混合添加了默认参数,请参见 #31571。 - 仅针对
xs断点时更新了下一个断点。请参见 #31500. -
box-shadow混合了现在允许的null值,并且不从多个参数中删除任何值。请参见 #30394
文档
- 重命名“Navs”页面为“Navs & Tabs”
- 将 “Screen readers” 帮助页重命名为 “Visually hidden”,将文件名重命名为
visually-hidden - 将 “Checks” 页面重命名为 “Checks&radios”,将文件名重命名为
checks-radios - 改进了复选/单选框的按钮组的文档
- 改进了我们文档中的跳过链接。
- 重新设计了文档导航,可在移动设备上使用更大的点击目标,并简化了子导航。
- #31114: 改进了可访问性方面的表单文档。
布局
- 容器水平填充已更新,以匹配
.row的栅格大小。 - #31439:
由于网格行为的退化,从行中删除了
flex: 10 100%。
重新启用
-
更新了
th样式以使用字体粗细和继承text-align的默认null,而不是显式设置。
颜色
- 撞色比从3:1到4.5:1。
- 将
$black设置为颜色对比色,而不是$gray-900。 -
改进
$green(及其主题别名$success)颜色以达到新的最小颜色对比度(从#28a745移动到#198754)。 -
改进了
$cyan(及其主题别名$info)颜色,使其更具活力(从#17a2b8改为#0dcaf0)。
表单
- #31383:
调整复选框和单选框的大小为
1em,而不是1.25em,以使他们更好地缩放自定义$font-size-base值和更多。
组件
徽章
- #31132:
将徽章的默认填充从
.25em/.5em增加到.35em/.65em。
按钮
轮播效果
- 轮播图控件的人字形图标替换为Bootstrap Icons中的新SVG。
-
增加了新的
.carousel-dark变量,用于黑色文本、控件和指示器(适合较亮的背景)。
关闭按钮
- 将
.close重命名为.btn-close,以减少通用名称。 -
关闭按钮现在使用
background-image(嵌入式SVG)代替了×。 在HTML中,无需触摸标记即可轻松进行自定义。 - 添加新变量以更好地控制自定义。
-
增加了新的
.btn-close-white变量,使用滤镜:filter: invert(1),使更高的对比度消除图标对黑暗的背景。
折叠面板
- #31346: 移除手风琴折叠面板的滚动锚定。
下拉菜单
-
增加了新的
.dropdown-menu-dark变量和随需下拉菜单的相关变量。 - 为
$dropdown-padding-x增加了新的变量. - 使得下拉分隔线变暗,以提高对比度。
导航栏
- #31035:
在.nav-link类中添加了
font-size,font-weight,color,:hover和color的新null变量。
分页组件
- 向分页链接添加了
transition。 请参见 #31396.
Pop 提示
- 将
whiteList选项重命名为allowList。
弹出框
- #31109: 设置默认toast持续时间5秒。
- #31155:在显示toast之前清除
timeout。 - #31381:
从吐司中消除了
overflow: hidden,并用calc()函数替换为适当的border-radius。 - 更新了文档,以包括有关如何自定义和弹出框主题的其他示例。
提示工具
- 将
whiteList选项重命名为allowList。
提供帮助者
-
响应式嵌入助手已经被重命名为ratio helpers,并且有了新的类名和改善的表现,以及一个有用的CSS变量。
-
类已重命名以将
by的纵横比更改为x, 例如,.ratio-16by9现在为.ratio-16x9。 -
我们放弃了
.embed-responsive-item和元素组选择器,取而代之的是更简单的.ratio > *选择器。 不需要更多的类,并且ratio助手现在可以与任何HTML元素一起使用。 -
$embed-responsive-aspect-ratiosSass映射已重命名为$aspect-ratios,其值已简化为包含类名和百分比作为key: value的一对。 - 现在,将为CSS变量中的每个值生成并包含CSS变量。修改
.ratio上的--aspect-ratio以创建任何自定义纵横比。
-
类已重命名以将
- “屏幕阅读器”类现在是“可视隐藏”类。
-
将Sass文件从
scss/helpers/_screenreaders.scss更改为scss/helpers/_visually-hidden.scss - 将
.sr-only和.sr-only-focusable重命名为.visually-hidden和.visually-hidden-focusable - 将
sr-only()和sr-only-focusable()mixins 重命名为visually-hidden()andvisually-hidden-focusable().
-
将Sass文件从
实用工具
- #31280:
为
right,bottom, 和left添加了新的定位实用工具。 每个属性的值包括0,50%, 和100%。-
我们还添加了新的
translate实用工具,以在定位元素时将这些定位实用工具与居中元素一起使用。 - 一些优秀的示例已添加到文档中以进行展示。
-
我们还添加了新的
- #31484: 增加了新的
border-width工具. - #31473:
.d-none实用工具已在我们的CSS中移动,以使其比其他显示实用工具更笨重。 - 将
.text-monospace重命名为.font-monospace. -
删除了
.text-hide,因为它是用于隐藏不再使用的文本的过时方法。 - 新的
line-height工具:.lh-1,.lh-sm,.lh-base和.lh-lg. 参见 here.
版本 v5.0.0-alpha1
浏览器支持
有关Bootstrap 5当前支持的功能的详细信息,请参见浏览器和设备页面。从v4开始,以下是对我们的浏览器支持的更改:
- 已放弃对Internet Explorer 10和11的支持
- 已放弃对Microsoft Edge < 16的支持
- 放弃对Firefox < 60的支持
- 放弃对Safari的支持 < 10
- 不再支持iOS Safari < 10
- 放弃对Chrome < 60 的支持
- 放弃对Android < 6 的支持
Sass
更改了我们的源Sass文件和已编译的CSS。
- 移除了
hover,hover-focus,plain-hover-focus, 和hover-focus-activemixins。使用常规的CSS语法继续向前。 请参见 #28267. - 删除以前不推荐使用的混合
float()form-control-mixin()nav-divider()retina-img()text-hide()(也删除了相关的实用工具类,.text-hide)visibility()form-control-focus()
- 在
scss/forms/下重新排列了表单源文件。 有关更多细节,请参阅表单部分。 - 删除了打印样式和
$enable-print-styles变量。 但是,打印展示类仍保持不变。请参见 #28339. -
放弃了
color(),theme-color()&gray()函数,而赞成使用变量。 请参见 #29083 -
theme-color-level()函数重命名为color-level(),现在可以接受所需的任何颜色,而不仅仅是$theme-color颜色。 请参见 #29083 当心:color-level()后来被放到v5.0.0-alpha3中。 $enable-grid-classes不再禁用容器类的生成请参见 #29146-
为简洁起见,将
$enable-prefers-reduced-motion-media-query和$enable-pointer-cursor-for-buttons重命名为$enable-reduced-motion和$enable-button-pointers。 -
行高从几个组件中降低,以简化我们的代码库。
button-size()和pagination-size()不再接受行高的参数。 请参见 #29271 -
现在,对于每个按钮状态,
button-variant()mixin接受3个可选的颜色参数,以覆盖color-contrast()提供的颜色。 默认情况下,这些参数将通过color-contrast()查找哪种颜色与按钮状态的背景颜色形成更大的对比度。 -
现在,
button-outline-variant()混合函数接受一个附加参数$active-color,用于设置按钮的活动状态文本颜色。 默认情况下,此参数将使用color-contrast()查找哪种颜色与按钮的活动背景颜色提供更多的对比度。 -
抛弃Sass贴图合并,这使得删除冗余值更加容易。 请记住,您现在必须在Sass映射中定义所有值,例如
$theme-colors。 了解如何处理 Sass地图 。 - 由于
color-yiq()函数和相关变量不再与YIQ颜色空间相关,因此已重命名为color-contrast()。 请参见 #30168.$yiq-contrasted-threshold已经重命名为$min-contrast-ratio.-
$yiq-text-dark和$yiq-text-light分别重命名为$color-contrast-dark和$color-contrast-light。
-
启用渐变后,将简化线性渐变,因此,
gradient-bg()现在仅接受可选的$color参数。 -
删除了
bg-gradient-variant()混合,因为现在可以使用.bg-gradient类而不是.bg-gradient-*类来向元素添加渐变。 -
media-breakpoint-down()使用断点本身而不是下一个断点。 使用media-breakpoint-down(lg)而不是media-breakpoint-down(md)来定位小于lg断点的视口。 -
media-breakpoint-between()mixin的第二个参数还使用了断点本身,而不是下一个断点。 使用media-between(sm, lg)而不是media-breakpoint-between(sm, md)来定位sm和lg断点之间的视口。 -
现在,
box-shadow()混合更好地支持none和具有多个参数的null。 您可以传递带有两个值的多个参数,并获得预期的输出。 请参见 #30394. - 现在,每个
border-radius()mixin都有一个默认值。 现在,您可以在不指定边界半径值的情况下调用这些混合,而将使用$border-radius变量。 请参见 #31571
JavaScript 脚本
更改了我们的源代码和已编译的JavaScript文件。
- 删除jQuery依赖关系,并将插件重写为常规JavaScript。
- 从公共静态方法中删除了下划线, 像
_getInstance()→getInstance().
颜色体系
我们已经更新了颜色系统,该系统可为Bootstrap提供动力,以改善颜色对比度并提供更多的颜色。
- 更新了蓝色和粉红色的基本色(
-500),以确保WCAG 2.1 AA对比度。 - 为每种颜色添加了新的色调和阴影,为每种基本颜色提供了9种单独的颜色,作为新的Sass变量。
-
为了支持我们的颜色系统,我们添加了新的自定义
tint-color()和shade-color()函数以适当地混合我们的颜色。
网格和布局
更改任何布局工具和我们的网格系统。
- 删除了
.media组件,因为它可以使用实用工具类进行构建。 请参见 #28265. - 删除了
position: relative于网格列的位置。 - 将水平填充连续添加到直接子级中,而不是添加到列本身中。
- 这简化了我们的代码库。
-
列类现在可以独立使用。 只要在
.row以外使用它们,就不会添加水平填充。
- 响应式栅栏类可用于控制水平,垂直或两个方向上的栅栏宽度。
-
栅栏宽度现在以
rem设置,从30px减小到1.5rem(24px)。 -
bootstrap-grid.css现在仅将box-sizing: border-box用于列,而不是重置全局box-sizing。 即使没有将box-sizing: border-box应用于每个元素,也可以通过这种方式使用网格系统。
内容, 重新启用, 等
更改重新启动,版式,表格等。
- RFS 启用以自动缩放字体大小。 请参见 #29152
-
将
<ul>和<ol>元素上的默认水平padding-left从浏览器默认40px重置为2rem。 - 简化表格样式(不再有奇怪的顶部边框)和收紧单元格填充。
- 嵌套表不再继承样式。
-
删除
.thead-light和.thead-dark而是使用.table-*变量,该类可用于所有表元素(thead,tbody,tfoot,tr,th和td)。 -
table-row-variant()混合重命名为table-variant(),并且仅接受2个参数:$color(冒号名称)和$value(颜色代码)。 边框颜色和强调颜色是根据表格系数变量自动计算的。 - 将表单元格填充变量分为
-y和-x。 - 删除了
.pre-scrollable类。 请参见 #29135 -
.text-*实用工具不再向链接添加悬停和焦点状态。 可以改用.link-*辅助类。 请参见 #29267 - 删除
.text-justify类. 请参见 #29793
排版
-
删除了新的
$display-font-sizes映射的$display-*变量。 -
删除了单个
$display-font-weight的各个$display-*-weight变量。 -
添加了两种新的
.display-*标题样式:.display-5和.display-6。 -
调整现有显示标题的大小,以使
font-size稍微更一致。 - 除非链接是特定组件的一部分,否则默认情况下,链接会带下划线(不仅仅是悬停)。
表单
- 在其自己的顶级部分下重新排列了表单文档。
- 将旧的“表单”页面拆分为几个子页面
- 在新的“表单”部分下移动了输入组文档
-
在
scss/forms/下重新排列了源Sass文件,包括了在输入组样式上移动。 -
将本机和自定义复选框和单选框组合到一个单一的
.form-check类中-
新的复选框现在可以支持通过
em/font-size或明确的修饰符类进行大小调整。 - 新的复选框在默认情况下显得更大,以提高可用性。
- 删除
.custom-control和它所关联的类。 -
将大多数
$custom-control变量重命名为$form-control变量。
-
新的复选框现在可以支持通过
- 将本机选择和自定义选择组合到
.form-select中- 删除了
.custom-select和它所关联的类。 -
将大多数
$custom-select变量重命名为$form-select。
- 删除了
- 更新了具有相同总体设计的文件输入组件,但改进了HTML。
-
重构的
.form-file标记可解决一些视觉错误,同时允许通过HTML(而非CSS)更改翻译和按钮文本。 - 完全删除了本机
.form-control-file和.form-control-range组件。 -
将
.custom-file重命名为.form-file(包括变量)。 当心:.form-file后来被放到v5.0.0-alpha3中,现在您可以使用.form-control了。 -
增加了对
:focus和:disabled样式的支持。
-
重构的
-
已将
.custom-range重命名为.form-range(包括变量)。 -
删除了用于边距实用工具的
.form-group(我们将文档示例替换为.mb-3)。 -
删除
.form-row以获取更灵活的栅栏网格。 - 删除
.form-inline以实现更灵活的网格。 -
在
.input-group中不再支持.form-control-plaintext。 -
已删除
.input-group-append和.input-group-prepend。您现在只需添加按钮和.input-group-text作为输入组的直接子元素。 - 表单标签现在需要
.form-label类。Sass变量现在可以根据您的需要设置表单标签的样式。 请参阅 #30476
组件
-
警报弹出框,面包屑导航,卡片,下拉菜单,列表组,弹出模态框,弹出窗口和提示工具的统一
padding值均基于$spacer变量。 请参阅 #30564.
禁用状态
-
按钮的禁用状态,关闭按钮,分页链接和表单范围现在分别添加了
pointer-events: none。 这简化了我们的代码库,并使覆盖CSS中的活动状态更加容易。 #29296.
警告弹出框
-
删除了
.alert-*类变量中<hr>元素的自动变暗。<hr>使用rgba()作为其颜色,因此无论如何它们自然应该融合在一起。
徽章
徽章进行了大量修改,以更好地与按钮区分开来,更好地利用实用工具类。
-
删除并用后台实用工具类替换了
.badge修饰符类(例如,使用.instead of代替.badge-primary) -
为
.badge-pill实用工具类删除了.badge-pill。 -
删除了
a.badge和button.badge的徽标的悬停和焦点样式。
按钮
-
从按钮插件中删除了复选框/单选按钮,转而使用仅CSS的解决方案,该格式在复选框/单选按钮的文档中进行了说明。 可以将
.btn-check类添加到输入中,任何具有.btn和修饰符类的标签都可以用作标签的主题。 请参阅 #30650.
卡片
- 移除了卡片栏,取而代之的是砖石网格 请参阅 #28922.
- 移除了卡片组,有利于网格,增加了响应行为的灵活性
大屏幕
-
删除了大屏幕的组件,以使用实用工具类(例如
.bg-light作为背景色)和.p-*来控制填充。
导航栏
- 现在,所有导航栏都需要在其中放置一个容器。 这极大地简化了间距要求,并消除了我们在v4中的响应容器中需要添加大量CSS的需求。
分页组件
- 分页链接现在具有可定制的
margin-left,当它们彼此分开时,会在所有角上动态圆角化。
Pop 提示
- 将
.arrow重命名为.popover-arrow
提示工具
- 将
.arrow重命名为.tooltip-arrow
可访问性
-
与仅与
.sr-only结合使用的旧的.sr-only-focusable不同,.sr-only-focusable可以用作没有.sr-only的独立类。 请参阅 #28720.
实用工具
网格
-
减少每个断点的响应订单实用工具的数量。 现在带有数字的最高排序实用工具是
.order-5,而不是.order-12。 请参阅 #28874.
杂项
-
添加了
.bg-body,可快速将<body>的背景设置为其他元素。 -
默认情况下,负保证金实用工具处于禁用状态。 您可以通过设置
$enable-negative-margins: true来重新启用它们,但是请记住,这会大大增加文件大小。
文档
- 删除了“浏览器错误墙”页面,因为它已过时
- 从Jekyll切换到Hugo
构建工具
- 更新了所有devDependencies
- 在撰写本文时,我们仅支持最新的Node.js LTS版本10和12。