重启
Reboot 是一个单文件中特定元素 CSS 更改的集合,它启动 Bootstrap,提供一个优雅、一致且简单的基准以供构建。
方法
Reboot 以 Normalize 为基础,仅使用元素选择器为许多 HTML 元素提供了一些自以为是的样式。其他样式仅使用类来完成。例如,我们重启了一些 <table>
样式以获得更简单的基准,并随后提供 .table
、.table-bordered
等。
以下是我们在 Reboot 中选择覆盖内容的准则和原因
- 更新一些浏览器默认值,以使用
rem
代替em
,以实现可扩展组件间距。 - 避免使用
margin-top
。垂直边距可能会折叠,产生意外结果。但更重要的是,单向margin
是一种更简单的思维模型。 - 为了更轻松地在不同设备尺寸之间进行缩放,块元素应使用
rem
作为margin
。 - 尽可能使用
inherit
将font
相关属性的声明保持在最小值。
页面默认值
更新 <html>
和 <body>
元素,以提供更好的全页面默认值。更具体地说
box-sizing
在每个元素上全局设置——包括*::before
和*::after
,设置为border-box
。这可确保元素的声明宽度绝不会因填充或边框而超出。<html>
上未声明基本font-size
,但假设为16px
(浏览器默认值)。font-size: 1rem
应用于<body>
,以便通过媒体查询轻松响应式地缩放字体,同时尊重用户偏好并确保更易于访问。<body>
还设置了全局font-family
、line-height
和text-align
。这后来被一些表单元素继承,以防止字体不一致。- 为了安全,
<body>
已声明background-color
,默认为#fff
。
原生字体栈
Bootstrap 4 中已删除默认网络字体(Helvetica Neue、Helvetica 和 Arial),并替换为“本机字体堆栈”,以便在每台设备和操作系统上实现最佳文本渲染。阅读更多有关 Smashing Magazine 文章中的本机字体堆栈 的信息。
$font-family-sans-serif:
// Safari for macOS and iOS (San Francisco)
-apple-system,
// Chrome < 56 for macOS (San Francisco)
BlinkMacSystemFont,
// Windows
"Segoe UI",
// Android
Roboto,
// Basic web fallback
"Helvetica Neue", Arial,
// Linux
"Noto Sans",
"Liberation Sans",
// Sans serif fallback
sans-serif,
// Emoji fonts
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !default;
请注意,由于字体堆栈包括表情符号字体,许多常见的符号/dingbat Unicode 字符将被渲染为多色象形文字。它们的外观将根据浏览器/平台的本机表情符号字体中使用的样式而有所不同,并且不会受到任何 CSS color
样式的影响。
此 font-family
应用于 <body>
,并在整个 Bootstrap 中自动全局继承。要切换全局 font-family
,请更新 $font-family-base
并重新编译 Bootstrap。
标题和段落
所有标题元素——例如 <h1>
——和 <p>
都被重置为删除其 margin-top
。标题添加了 margin-bottom: .5rem
,段落添加了 margin-bottom: 1rem
,以便于间距。
标题 | 示例 |
---|---|
<h1></h1>
|
h1. Bootstrap 标题 |
<h2></h2>
|
h2. Bootstrap 标题 |
<h3></h3>
|
h3. Bootstrap 标题 |
<h4></h4>
|
h4. Bootstrap 标题 |
<h5></h5>
|
h5. Bootstrap 标题 |
<h6></h6>
|
h6. Bootstrap 标题 |
列表
所有列表——<ul>
、<ol>
和 <dl>
——都删除了其 margin-top
,并添加了 margin-bottom: 1rem
。嵌套列表没有 margin-bottom
。
- 所有列表都删除了其顶部边距
- 并使它们的底部边距标准化
- 嵌套列表没有底部边距
- 这样它们的外观更均匀
- 尤其是在后面紧跟更多列表项时
- 左填充也已重置
- 这是一个有序列表
- 其中有几个列表项
- 它具有与前一个无序列表
- 相同的整体外观
为了实现更简单的样式、更清晰的层级结构和更好的间距,描述列表更新了margin
。<dd>
将margin-left
重置为0
,并添加margin-bottom: .5rem
。<dt>
将加粗。
- 描述列表
- 描述列表非常适合定义术语。
- 术语
- 术语的定义。
- 同一术语的第二个定义。
- 另一个术语
- 此另一个术语的定义。
预格式文本
<pre>
元素被重置为移除其margin-top
,并为其margin-bottom
使用rem
单位。
.example-element { margin-bottom: 1rem; }
表格
表格经过轻微调整,以设置<caption>
样式、折叠边框并确保整个表格的text-align
一致。有关边框、填充等的其他更改,请参阅.table
类。
表格标题 | 表格标题 | 表格标题 | 表格标题 |
---|---|---|---|
表格单元格 | 表格单元格 | 表格单元格 | 表格单元格 |
表格单元格 | 表格单元格 | 表格单元格 | 表格单元格 |
表格单元格 | 表格单元格 | 表格单元格 | 表格单元格 |
表单
各种表单元素已重新启动,以实现更简单的基本样式。以下是其中一些最显着的更改
<fieldset>
没有边框、填充或边距,因此它们可以轻松用作单个输入或输入组的包装器。<legend>
(如字段组)也已重新设置样式,以显示为一种标题。<label>
设置为display: inline-block
,以允许应用margin
。<input>
、<select>
、<textarea>
和<button>
主要由 Normalize 处理,但 Reboot 会移除其margin
并同时设置line-height: inherit
。<textarea>
被修改为仅可垂直调整大小,因为水平调整大小通常会“破坏”页面布局。- 当
:not(:disabled)
时,<button>
和<input>
按钮元素具有cursor: pointer
。
这些更改以及更多更改如下所示。
按钮指针
Reboot 包含对 role="button"
的增强,将默认光标更改为 pointer
。将此属性添加到元素中,以帮助指示元素是交互式的。对于 <button>
元素,此角色不是必需的,这些元素会获得自己的 cursor
更改。
<span role="button" tabindex="0">Non-button element button</span>
杂项元素
地址
<address>
元素已更新,将浏览器的默认 font-style
从 italic
重置为 normal
。line-height
现在也已继承,并且已添加 margin-bottom: 1rem
。<address>
用于显示最近祖先(或整个作品)的联系信息。通过使用 <br>
结束行来保留格式。
1355 Market St, Suite 900
San Francisco, CA 94103
P (123) 456-7890 全名
first.last@example.com
引用块
块引用的默认 margin
为 1em 40px
,因此我们将它重置为 0 0 1rem
,使其与其他元素更一致。
一个众所周知的引用,包含在块引用元素中。
内联元素
<abbr>
元素接收基本样式,使其在段落文本中脱颖而出。
摘要
摘要的默认 cursor
为 text
,因此我们将它重置为 pointer
,以传达可以通过单击元素与之交互。
一些详细信息
有关详细信息的更多信息。
更多详细信息
以下是有关详细信息的更多详细信息。
HTML5 [hidden]
属性
HTML5 添加了 一个名为 [hidden]
的新全局属性,默认情况下样式为 display: none
。借鉴 PureCSS 的一个想法,我们通过使 [hidden] { display: none !important; }
来改进此默认设置,以帮助防止其 display
被意外覆盖。虽然 [hidden]
不受 IE10 原生支持,但我们 CSS 中的显式声明解决了该问题。
<input type="text" hidden>
jQuery 不兼容
[hidden]
与 jQuery 的 $(...).hide()
和 $(...).show()
方法不兼容。因此,我们目前不特别认可 [hidden]
优于其他用于管理元素 display
的技术。
要仅切换元素的可见性,这意味着其 display
未修改,并且元素仍可以影响文档流,请使用 .invisible
类。