メインコンテンツへスキップ

Bootstrap4.xの使い方をBootstrap3.xからの変更箇所を交えて解説しています。

Reboot v4.0.0新設

Rebootは、要素固有のCSS変更を1つのファイルにまとめたもので、Bootstrapをキックスタートして、エレガントで一貫性のある簡単なベースラインを構築。

アプローチ(Approach)

Rebootは、Normalizeの上で構築され、要素のセレクタのみを使用して多少独断的なスタイルで多くのHTML要素を提供。追加のスタイルは、クラスだけで行われる。例えば、より単純なベースラインのためにいくつかの <table> のスタイルを再構築して、後で .table.table-bordered などを提供。

Rebootで再定義すべきものを選ぶガイドラインと理由は次のとおり:

  • いくつかのブラウザのデフォルト値を更新して、拡張可能なコンポーネントの空白の単位を em から rem にする。
  • margin-top を避けているので、縦方向のマージンが折りたたまれて予期しない結果を与える可能性がある。しかし、もっと重要なことは、margin の一方向は、より単純なメンタルモデルであるということ。
  • デバイスサイズ全体を容易に拡大縮小するために、ブロック要素の margin には rem を使用する必要がある。
  • 可能な限り inherit(継承)を使用して、font 関連のプロパティの宣言を最小限にする。

 

ページのデフォルト(Page defaults)

<html><body> 要素は、より良いページ全体のデフォルトを提供するのに更新される。具体的には:

  • box-sizing は、*::before*::after を含むすべての要素で基本的に border-box を設定するので、要素で宣言した幅がpaddingやborderを決して超えないことが保証される。
  • font-size は、<html> で宣言されないが、16px(ブラウザのデフォルト)が仮定される。font-size:1rem<body> に適用され、ユーザの嗜好を尊重し、よりアクセスしやすいアプローチを保証しながら、メディアクエリによる簡単なレスポンシブの拡大縮小が可能。
  • また <body> では、基本的な font-family, line-height, text-align を設定しているので、後でフォントの不一致を防止するために、いくつかのフォーム要素によって継承される。
  • 安全のために <body> には、デフォルトの背景色として background-color#fff(white)を設定。

 

基準のフォントスタック(Native font stack)

デフォルトのWebフォント(Helvetica Neue, Helvetica, Arial)はBootstrap4で廃止され、あらゆるデバイスとOS上で最適なテキストのレンダリングを行うために「ネイティブ・フォントスタック」に置き換えられた。詳細はこのSmashing Magazineの記事にあるネイティブ・フォントスタックの詳細に記載。

$font-family-sans-serif:
	// MacOS と iOS (San Francisco)用の Safari
	-apple-system,
	// MacOS (San Francisco)用の Chrome 56未満
	BlinkMacSystemFont,
	// Windows
	"Segoe UI",
	// Android
	"Roboto",
	// 基本のwebフォールバック
	"Helvetica Neue", Arial, sans-serif,
	// 絵文字用フォント(v4.0.0-beta.2追加)
	"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;

この font-family<body> に適用されると、Bootstrap全体で自動的に基本継承される。基本の font-family に切り替えるには、_variables.scss ファイルにある $font-family-base を更新し、Bootstrapを再コンパイルする。

 

見出しと段落(Headings and paragraphs)

※定義済みクラスを使用した見出しについてはこちらに掲載。

すべての見出し要素(例: <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 見出し
設定例
<h1>h1. Bootstrap 見出し</h1>
<h2>h2. Bootstrap 見出し</h2>
<h3>h3. Bootstrap 見出し</h3>
<h4>h4. Bootstrap 見出し</h4>
<h5>h5. Bootstrap 見出し</h5>
<h6>h6. Bootstrap 見出し</h6>

 

リスト(Lists)

※定義済みクラスを使用したリストについてはこちらに掲載。

すべてのリスト(<ul>, <ol>, <dl>)では、margin-top が削除され、margin-bottom: 1rem を追加。リストが入れ子になった場合は、margin-bottom は追加されない。

箇条書きリスト

見本
  • リスト1
  • リスト2
  • リスト3
    • 子リスト1
    • 子リスト2
    • 子リスト3
  • リスト4
  • リスト5
  • リスト6
設定例
<ul>
	<li>リスト1</li>
	...
	<ul>
		<li>子リスト1</li>
		...
	</ul>
	<li>リスト4</li>
	...
</ul>

順序つきリスト

見本
  1. リスト1
  2. リスト2
  3. リスト3
  4. リスト4
  5. リスト5
  6. リスト6
設定例
<ol>
	<li>リスト1</li>
	...
</ol>

定義リスト

※定義済みクラスを使用した水平定義リストについてはこちらに掲載。

シンプルなスタイリング、階層のクリア、空白の改善のため、定義リスト(<dl>)では margin を更新。<dd> では margin-left0 にリセットされ、margin-bottom: .5rem を追加。<dt>太字に設定。

見本
リストアイテム
リストアイテムの説明
リストアイテム
リストアイテムの説明1
リストアイテムの説明2
リストアイテムがとても長い場合
リストアイテムの説明1
リストアイテムの説明2
リストアイテムの説明3
設定例
<dl>
	<dt>リストアイテム</dt>
	<dd>リストアイテムの説明</dd>
	...
</dl>

 

整形済みテキスト(Preformatted text)

※コードブロックのスタイルはこちらに掲載。

<pre> 要素では、margin-top が削除され、margin-bottomrem 単位で使用するようにリセット。

見本
.example-element {
	margin-bottom: 1rem;
}
設定例
<pre>.example-element {
	margin-bottom: 1rem;
}</pre>

 

テーブル(Tables)

※定義済みクラスを使用したテーブルについてはこちらに掲載。

テーブルは、<caption>、罫線の枠、一貫した text-align の確保のためにスタイルが少し調整される。さらに .table クラスでborder、paddingを追加変更。

見本
これはテーブルの見本で、ここは内容を説明するための表題。
見出し 見出し 見出し 見出し
テーブルのセル テーブルのセル テーブルのセル テーブルのセル
テーブルのセル テーブルのセル テーブルのセル テーブルのセル
テーブルのセル テーブルのセル テーブルのセル テーブルのセル
設定例
<table>
	<caption>これはテーブルの見本で、ここは内容を説明するための表題。</caption>
	<thead>
		<tr>
			<th>見出し</th>
			...
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>テーブルのセル</td>
			...
		</tr>
		...
	</tbody>
</table>

 

フォーム(Forms)

※定義済みクラスを使用したフォームについてはこちらに掲載。

様々なフォーム要素が、より単純な基本スタイルに再設定される。ここで最も注目すべきいくつかの変更点は、次のとおり:

  • 個別のインプットやインプットグループのラッパーとして簡単に使用できるように、<fieldset> には、border、padding、marginの設定はしない。
  • <legend> は、fieldsetと同様、並べ替えの見出しとしても表示されるようにスタイルを変更。
  • <label> は、display: inline-block で表示できるように設定され、margin を適用。
  • <input><select>, <textarea>, <button> は、主にNormalizeによって対処されるが、Rebootがそれらの margin を削除し、line-height: に設定。
  • <textarea> は、水平方向のリサイズは多くの場合ページレイアウトを"分割"するだけで、縦方向のリサイズができるように変更。

これらの変更などは、以下に表示。

見本
legendの見本

100

設定例
<form>
	<fieldset>
		<legend>legendの見本</legend>
		<p>
			<label for="input">inputの見本</label>
			<input type="text" id="input" placeholder="Example input">
		</p>
		<p>
			<label for="select">selectの見本</label>
			<select id="select">
				<option value="">選ぶ...</option>
				<optgroup label="Option group 1">
					<option value="">オプション1</option>
					...
				</optgroup>
				...
			</select>
		</p>
		<p>
			<label>
				<input type="checkbox" value=""> このチェックボックスをクリック
			</label>
		</p>
		<p>
			<label>
				<input type="radio" id="optionsRadios1" checked="checked" name="optionsRadios" value="option1"> オプション1...
			</label>
			<label>
				<input type="radio" id="optionsRadios2" name="optionsRadios" value="option2"> オプション2...
			</label>
			<label>
				<input type="radio" id="optionsRadios3" name="optionsRadios" value="option3" disabled> オプション3は無効
			</label>
		</p>
		<p>
			<label for="textarea">textareaの見本</label>
			<textarea id="textarea" rows="3"></textarea>
		</p>
		<p>
			<label for="date">dateの見本</label>
			<input type="date" id="date">
		</p>
		<p>
			<label for="time">timeの見本</label>
			<input type="time" id="time">
		</p>
		<p>
			<label for="output">outputの見本</label>
			<output id="output" name="result">100</output>
		</p>
		<p>
			<button type="submit">登録ボタン</button>
			<input type="submit" value="Input登録ボタン">
			<input type="button" value="Inputボタン">
		</p>
		<p>
			<button type="submit">登録ボタン無効 disabled"</button>
			<input type="submit" value="Input登録ボタン無効" disabled>
			<input type="button" value="Inputボタン無効" disabled>
		</p>
	</fieldset>
</form>

 

その他の要素(Misc elements)

アドレス(Address)

<address> 要素では、ブラウザのデフォルトのフォントスタイルが italic から normal にリセット。line-height も継承され、margin-bottom: 1rem を追加。<address> は、最も上位の製造元(または作品全体)の連絡先情報を表示。すべての行を<br>で終了して書式を保持。

見本
Twitter社
94103 アメリカ合衆国 カルフォルニア州
サンフランシスコ市 マーケット通り1355番地 900号室
P: (123) 456-7890
フルネーム
first.last@example.com
設定例
<address>
	<strong>Twitter社</strong><br>
	アメリカ合衆国 カルフォルニア州<br>
	サンフランシスコ市 フォルサム通り795番地 600号室<br>
	<abbr title="電話">P:</abbr> (123) 456-7890
</address>
<address>
	<strong>フルネーム</strong><br>
	<a href="mailto:#">first.last@example.com</a>
</address>

引用(Blockquote)

※定義済みクラスを使用した引用についてはこちらに掲載。

blockquoteのデフォルトの margin1em 40px だが、他の要素との一貫性のために 0 0 1rem にリセット。さらに .blockquote クラスでスタイルを追加変更。

見本

引用文です。

文章の引用元が明示できます。
設定例
<blockquote>
	<p>引用文です。</p>
	<footer>文章の<cite title="引用元の名前">引用元</cite>が明示できます。</footer>
</blockquote>

インライン要素(Inline elements)

<abbr> 要素は、段落テキストの中で基本的に目立つようなスタイルになる。

見本

単語属性の省略形はattrです。

設定例
<p>単語属性の省略形は<abbr title="Attribute">attr</abbr>です。</p>

詳細情報表示(Summary)

詳細情報表示のデフォルトの cursor は、テキストカーソル text)なので、それを指カーソル pointer)にリセットして、要素をクリックすることで詳細情報が開閉可能なことを伝える。

見本
詳細

詳細についての詳しい情報。

さらに詳細

詳細についてさらに詳しく説明。

設定例
<details>
	<summary>詳細</summary>
	<p>詳細についての詳しい情報。</p>
</details>

<details open>
	<summary>さらに詳細</summary>
	<p>詳細についてさらに詳しく説明。</p>
</details>

 

HTML5 [hidden] 属性(HTML5 [hidden] attribute)

HTML5ではデフォルトで display: none にスタイル設定された [hidden] という新しいグローバル属性が追加された。その display が誤って再定義されるのを防ぐため、PureCSSからアイデアを借りて [hidden] { display: none !important; } を使ってこれを改善している。[hidden] はIE10では元々サポートされていないが、CSSの明示的な宣言で、この問題を回避している。

<input type="text" hidden>

要素の可視性を単に切り替えるのに、その display が変更されない要素では文書の流れに影響を与えてしまうので、代わりに可視性ユーティリティクラスを使用する。