原文:Reboot
Reboot、単一ファイルの要素固有のCSSのコレクションを、手際よく、一貫し、完結に提供される、Bootstrapのキックスターターの基準線を構築するために、変更します。
方法
Rebootは、Normalizeを構築します。要素セレクタだけを使用して、やや独断的なスタイルで、多くのHTML要素を提供します。 追加のスタイル調整は、クラスでのみ行われます。例えば、私たちは、より単純な基準線のために、いくつかの<table>スタイルを再起動します。そして、後で、.table、.table-borderedなどを提供します。
ここに、私たちのガイドラインとRebootで何を上書きするべきか選択をするための理由があります。:
間隔の大きさを変更できるコンポーネントのためのemを使用して、いくつかのブラウザの既定の値を更新します。
margin-topを避けます。垂直マージンは、折りたたむことができ、予期せぬ結果をもたらします。しかしもっと重要なのは、一つの方向のマージンは、より単純なメンタルモデルです。
デバイスサイズ全体の大きさ変更を容易にするために、ブロック要素は、マージンのために、remを使用する必要があります。
フォントに関連したプロパティの宣言を、可能な限り継承を使用して、最低限に、維持します。
ページのデフォルト
<html>と<body>要素は、より素晴らしいページ幅のデフォルトを提供するために更新されます。より具体的には、
box-sizingは、すべての要素上で、グローバルに設定されています-border-boxへの*::beforeと*::afterが含まれています。これは、要素の宣言された幅が、パディングや枠を決して超えないことを、保証します。
基準となるフォント・サイズは、<html>で宣言されていませんが、16pxが、(ブラウザのデフォルト)想定されています。フォント・サイズ:1remは、ユーザー環境設定を考慮に入れて、より多くのアクセス可能なアプローチを確保しながら、メディア・クエリを通して、簡単なレスポンシブ型の大きさの変更のために、<body>で適用されます。
また、<body>は、グローバルなフォントファミリー、行の高さ、そして、テキストの位置合わせを設定します。これは、フォント矛盾を防ぐために、いくつかのフォ-ム要素で、後に継承されます。
安全のため、<body>は宣言された背景色を持っており、既定の設定は、#fffです。
ネイティブ・フォント・スタック
デフォルトのWebフォント(Helvetica Neue、HelveticaとArial)は、すべてのデバイスとOSの最適なテキストレンダリングのため、Bootstrap 4では使うのをやめ、"native font stack"に置き換えます。ネイティブ・フォント・スタックの詳細については、このSmashing Magazineの記事をお読み下さい。
$font-family-sans-serif:
// Safari for OS X and iOS (San Francisco)
-apple-system,
// Chrome < 56 for OS X (San Francisco)
BlinkMacSystemFont,
// Windows
"Segoe UI",
// Android
"Roboto",
// Basic web fallback
"Helvetica Neue", Arial, sans-serif,
// Emoji fonts
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
このフォントファミリーは、<body>に適用され、Bootstrapを通して、自動的にグローバルに継承されます。グローバルなフォントファミリーを切り換えるために、$font-family-baseを更新し、Bootstrapを再コンパイルします。
見出しと段落
<h1>のような、すべての見出し要素と<p>は、マージントップが削除されるようにリセットされます。見出しは、簡単な間隔のための追加されたmargin-bottom: .5remと段落のmargin-bottom: 1remを持っています。
リスト
<ul>、<ol>と<dl>のすべてのリストは、それらの削除したmargin-topとmargin-bottom: 1remを持っています。 ネストされたリストは、margin-bottomを持っていません。
より単純なスタイル調整のため、階層の明確化、素晴らしい間隔、説明リストは、マージンを更新します。<dd>sは、margin-leftを0に再設定し、margin-bottom: .5remを追加します。<dt>sは、ボールドです。
整形済みテキスト
<pre>要素は、そのmargin-topを削除するために再設定され、そのmargin-bottomのためのrem単位を使用しました。
.example-element {
margin-bottom: 1rem;
}
表
表は、
フォ-ム
さまざまなフォ-ム要素は、より単純な基本スタイルのために再起動されました。ここに、最も顕著な変更のいくつかがあります。:
- <fieldset>は、枠、パディングやマージンを持っていません。それで、それらは、それぞれの入力のためのラッバーや入力のグループとして簡単に使用することができます。
- また、fieldsetsのような<legend>は、並べ替えの見出しとして、スタイルが更新されました。
- <label>は、以下を表示するために設定されています。:inline-blockを使用してマージンを適用できます。
- <input>、<select>、<textarea>、<button>はほとんどがNormalizeによって対処されていますが、また、再起動すると、それらのマージンは、削除され、line-height: inheritが、設定されます。
- <textarea>は、ページレイアウトを"分割"して、水平に大きさを変更することで、垂直に大きさを変更できるように修正されます。
これらの変更などは、以下で説明します。
その他の要素
アドレス
<address>要素は、イタリックから標準にブラウザのデフォルトのフォント・スタイルを再設定するために、更新されます。また、line-heightは、現在、継承され、margin-bottom: 1remが、追加されました。<address>は、最も近い原型(や作品全体)の連絡先情報を表示するためのものです。<br>で、行を終了して書式を保持します。
Blockquote
blockquotes上の既定のマージンは、1em 40pxになります。それで、私たちは、他の要素と一貫した何かのために、それを、0 0 1remに再設定しました。
インライン要素
<abbr要素>は、段落テキストの中で目立つように基本的なスタイルを受け取ります。
概要
概要の既定のカーソルはテキストです。それで、私たちは、要素が、それをクリックすることによって相互作用できることを伝えるために、ポインターに再設定しました。
HTML5[hidden]属性
HTML5は、既定で、display: noneとしてスタイルされている、[hidden]という名前の新しいグローバル属性を追加します。PureCSSから概念を借りて、私たちが、この表示を誤って上書きしないようにするために、[hidden] {display:none!important;}を設定することで、このデフォルトを改善しています。[hidden]は、IE10でネイティブにサポートされていませんが、私たちのCSSの明示的宣言は、その問題を避けて通ります。
<input type="text" hidden>
jQueryの非互換性
jQuery incompatibility
[hidden]は、jQueryの$(...).hide()と$(...).show()メソッドと互換性を持っていません。その結果、私たちは、現在、要素の表示を管理するために、[hidden]を他の技術に重ねることを特に推奨していません。
単に要素の表示を切り替えるために、その表示が、変更されていないことを示しています。そして、その要素は、依然として、文書の流れに影響を及ぼすことがあります。代わりに、.invisibleクラスを使用してください。
タッチのためのクリック遅延最適化
Click delay optimization for touch
伝統的に、タッチスクリーン・デバイス上のブラウザは、"タップ"の終了との間に約300ミリ秒の遅延を持っています。-指/スタイラスが、スクリーンから持ち上げられる瞬間-そして、クリック・イベントが、発生します。これらのブラウザで、最初の"タップ"の後、早すぎるトリガー動作やリンクをすることなく、"ダブルタップでズーム"ジェスチャを正しく処理するには、この遅延が必要ですが、それはあなたのサイトが少し遅く、反応しないように感じることがあります。
ほとんどのモバイル・ブラウザは、サイトに対してこの300msの遅延を自動的に最適化します。それは、それらのレスポンシブ・メタ・タグの一部として、width=device-widthプロパティを使用します。(user-scalable=noを持つインスタンスため、拡大を無効にするサイトと同様に、この習慣は、アクセシビリティとユーザビリティの理由から強く反対します)。ここでの最大の例外は、Windows Phone 8.1上のIE11と、iOS 9.3以前のiOS Safari(およびその他のiOS WebViewベースのブラウザ)です。
タッチ対応のラップトップ/デスクトップデバイスでは、IE11とMicrosoft Edgeは、現在、"ダブルタップで拡大"機能を備えた唯一のブラウザです。レスポンシブ・メタ・タグは、すべてのデスクトップ・ブラウザによって、無視されるため、width = device-widthを使用すると、ここでは、300msの遅延に影響しません。
Windows Phone 8.1のIE11と同様に、デスクトップ上のIE11とMicrosoft Edgeでこの問題に対処するために、Bootstrapは、明示的に、(ボタンとリンクのような)すべてのインタラクティブな要素上で、touch-action:manipulation CSSプロパティを使用します。このプロパティは、基本的に、それらの要素でダブルタップ機能を無効にし、300msの遅延を排除します。
以前のiOSバージョン(9.3以前)の場合、推奨する方法は、遅延を明確に回避するFastClickのような、追加のスクリプトを使用することです。
詳細については、タッチスクリーンの相互作用のための300msの遅延を抑制する互換性表を参照してください。