目录
Reboot,一个文件中特定于元素的CSS更改的集合。Bootstrap提供了一个优雅的、一致的、简单的基线来进行构建。
1、Approach
Reboot建立在Normalize的基础上,它仅使用元素选择器提供了许多具有某种固执己见风格的HTML元素。额外的样式设计只在类中完成。例如,我们重新启动一些<table>
样式以获得更简单的基线,然后提供.table
、.table- borderdered
等等。
以下是我们在Reboot中选择覆盖哪些内容的指导方针和理由:
- 更新一些浏览器默认值以使用rems而不是ems来处理可伸缩的组件间距。
- 避免
margin-top
。垂直边距可能会崩溃,从而产生意想不到的结果。但更重要的是,单一的利润方向是一种更简单的心理模型。 - 为了更容易跨设备大小缩放,块元素应该使用rems作为边界。
- 尽可能少声明与字体相关的属性,尽可能使用
inherit
。
2、Page defaults
<html>
和<body>
元素被更新以提供更好的页面范围默认值。更具体地说
- ·box-sizing·全局设置在每个元素上,包括border-box
*::before
和*::after
。这将确保元素声明的宽度不会因填充或边框而超过。 - 在
<html>
上没有声明基本font-size
,但假定为16px(浏览器默认值)。Font-size: 1rem
应用于<body>
,以便通过媒体查询方便地响应式类型缩放,同时尊重用户偏好,并确保更容易访问的方法。 <body>
还设置了一个全局的font-family
、line-height
和text-align
。这是后来一些表单元素继承的,以防止字体不一致。- 为了安全起见,
<body>
声明了背景色,默认为#fff
。
3、Native font stack
默认的web字体(Helvetica Neue, Helvetica和Arial)已经在Bootstrap 4中被删除,取而代之的是一个本地字体堆栈,以在每个设备和操作系统上进行最佳的文本渲染。在Smashing杂志上阅读更多关于原生字体堆栈的文章。
$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;
请注意,因为字体堆栈包括表情符号字体,许多常见的unicode符号/dingbat字符将被呈现为多种颜色的象形文字。它们的外观会有所不同,这取决于浏览器/平台原生表情符号字体的样式,而且它们不会受到任何CSS颜色样式的影响。
此font-family
应用于<body>
,并在整个Bootstrap过程中自动全局继承。要切换全局字体,请更新$font-family-base
并重新编译Bootstrap。
4、Headings and paragraphs
所有标题元素,例如<h1>
和<p>
,都被重置以删除它们的margin-top
。标题的margin-bottom: .5rem
,段落的 margin-bottom: 1rem
,便于间距。
5、Lists
所有的列表----<ul>
, <ol>
,and <dl>
----margin-top
移除和添加margin-bottom: 1rem
。列表嵌套是没有的margin-bottom
。左侧padding也被重置。
为了简化样式、清晰的层次结构和更好的间距,描述列表更新了margin
。<dd>
s重置margin-left
为0并添加margin-bottom: .5rem
。< dt >
s是粗体。
6、Preformatted text
<pre>
元素被重置以删除其margin-top
,并使用rem单位作为margin-bottom
。
.example-element {
margin-bottom: 1rem;
}
7、Tables
表稍微调整样式<caption>
s,折叠边框,并确保始终一致的文本对齐。在.table类中还提供了边框、填充等其他更改。
8、Forms
为了更简单的基本样式,已经重新启动了各种表单元素。以下是一些最显著的变化
<fieldset>
没有边框、填充或边距,因此可以方便地将它们用作单个输入或一组输入的包装器。- 与
<fieldset>
一样,<legend>
s也被重新设计为显示为各种标题。 <label>
设置为display: inline-block
以允许应用空白。<input>
s,<select>
s,<textarea>
s,和<button>
大多由Normalize处理,但Reboot删除它们的边距并设置line-height: inherit
。<textarea>
被修改为只能垂直调整大小,因为水平调整通常会打破页面布局。<button>
s和<input>
button元素在:not(:disabled)
时具有cursor: pointer
。
下面演示了这些更改以及更多更改。
9、Pointers on buttons
重新启动包括对role="button"
的增强,以将默认光标更改为指针。将此属性添加到元素中,以帮助表明元素是交互式的。对于<button>
元素来说,这个角色不是必需的,因为这些元素有自己的游标更改。
<span role="button" tabindex="0">Non-button element button</span>
10、Misc elements
10.1、Address
<address>
元素被更新以将浏览器的默认字体样式从斜体重置为正常。Line-height
现在也被继承,并且添加了margin-bottom: 1rem
。<address>
用于提供最近的祖先(或整个工作体)的联系信息。通过使用<br>
结束行来保持格式。
10.2、Blockquote
blockquotes的默认边界是1em 40px,所以我们将其重置为0 0 1rem,以便与其他元素保持一致。
10.3、Inline elements
<abbr>
元素接收基本样式,使其在段落文本中突出。
10.4、Summary
Summary上的默认光标是text,因此我们将其重置为pointer,以表示可以通过单击该元素进行交互。
[hidden]
attribute
11、HTML5 HTML5添加了一个新的全局属性[hidden]
,默认样式为display: none
。借鉴了PureCSS的一个想法,我们通过使[hidden] {display: none !}
来帮助防止它的显示被意外覆盖。虽然[hidden]
不是IE10原生支持的,但我们的CSS中的显式声明解决了这个问题。
<input type="text" hidden>
jQuery的不兼容性
[hidden]
不兼容jQuery的$(…).hide()
和$(…).show()
方法。因此,我们目前并不特别认可[hidden]
技术优于其他管理元素显示的技术。
若要仅切换元素的可见性,即元素的显示不会被修改,且元素仍然可以影响文档的流,请使用.invisible
类。
后记
如果你感觉文章不咋地
//(ㄒoㄒ)//
,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L;~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※
!!!