Twitter Bootstrap 3 の変更点概要
Bootstrap 自体の仕様だけでなく体制なども変更されるようです。
- モバイルファースト
- twitter/bootstrap, twitter/bootstrap-server, mdo/bootstrap-blog(プライベートレポート)を twbs organization アカウントへ移行
- サイトの URL を http://getbootstrap.com に変更
- CSS はレスポンシブ用スタイルも含めて1ファイルにする
- IE7, Firefox3系 のサポート廃止
- Glyphicon のフォント版を採用
- Apache ライセンスから MIT ライセンスへ移行
- *-wip ブランチの開発スタイルから 3.1.0-modal-revamp のような機能ごとのブランチに変更
- 過去バージョンのダウンロードにタグを使う
コミュニティのプロジェクトを organization の正式プロジェクトに採用するなどして、コミュニティの強化を図りたいらしいです。また、@mdo と @fat の二人だけでは issue, pull requet の管理がきついらしくオフィシャルの contributor(貢献者)を募りたいようです。
以降で Wiki と Pull Request の内容から変更点の詳細と進捗をまとめます。
ドキュメント
主に organization 周りのページとコードの変更。
全般
- Scaffolding と Base CSS ページを新規の CSS ページに統合。
- Mustache テンプレート から i18n タグを除く。
{{_i}}{{/i}}は使わない。 - ギャラリーページを追加。
- Extend ページを削除。
- ページタイトル用の変数を追加。
ホームページ
- Retina 用にスクリーンショットを更新。
- 新しいサイト用にスクリーンショットを差替。
- 新しいギャラリーページへリンク。
- ギャラリーページにネタを追加。
- Redo の例(?)
CSS ページ
- アイコンを大きくする。
Example テンプレート
- マークアップとモバイルファーストの変更を反映。
CSS
IE7, Firefox 3.6 のサポート廃止、CSS ファイルの統合、など。
- IE7 のサポート廃止。
*ハック、*zoom: 1;など IE7 用スタイルをすべて削除。 - Firefox 3.6 のサポート廃止。
-moz-box-shadowやボタンのインナーパディングハックを削除。 - キャメルケースの変数名をダッシュ連結に変更。例
@bodyBackgroundを@body-backgroundに変更。 - モバイルファースト。レスポンシブ関連スタイルもすべて
bootstrap.css1つにまとめる。 -
@blue@orangeなどのセマンティックでない色変数を廃止し、@state-warning-textのような意味のある変数にする。また@black@whiteも廃止する。#000#fffの方が 20% も短く、そもそも変数で変更する値ではないため。 -
.border-radius().border-*-*-radiusmixin の廃止。ベンダープレフィックスが必要 なのは Android 2.1, iOS 3.2 と古いブラウザのみなので削除。各コーナー(左上、右下など)はベンダープレフィックス不要のため mixin を削除。.border-left-radiusのような 1辺(2コーナー)の mixin は引き続き使用可能。 - layout.less の廃止。スタイルが2つしかなく、fluid(リキッド)コンテナは廃止(次セクション 参照)のため不要。
.containerのスタイルは grid.less へ移動。 - clearfix mixin の名称変更。mixin は
.clear_float()、クラスは.clearfixになる。現在 LESS は mixin と同名のクラスをサポートしていないため “mixins.less にクラスは含めない” 方針によりこのような変更となった。 -
.hide.showに!importantを付加。どの要素でもこれらのクラスを機能させるため、より少ないコードで実現できる!importantフラグを選択した。 - reset.less を廃止し、最新の Normalize にアップグレードする。normalize.less を追加することになる。印刷用スタイルやレスポンシブ画像用スタイル(reset されたスタイルを変更するだけのもの)は scaffolding.less に移動。
-
.*-importantを廃止して.*-dangerに変更。ボタンやラベルなどの赤色のバリエーションのクラス名は.*-dangerに統一する。 - 未練たらしい “TODO” が無いことを確認する。
レイアウトとグリッドシステム
グリッドシステムは1つになり、fluid をあえて指定する必要はなくなる。
- グリッドシステムのオーバーホール:デフォルトで fliud(リキッドレイアウト)
- 今までのデフォルトの固定幅グリッドとは別に定義していた fuild グリッドシステム、コンテナ、レイアウトを廃止。
.rowによるグリッドシステムは、ピクセル指定の幅やマージンの代わりに パーセンテージ指定やbox-sizing: border-boxを使う。- グリッドのネストをサポート。カラムは親要素のサイズに比例する。
- オフセットもサポート。
- テーブル用グリッドクラスの廃止
- グリッド指定する必要はない。
.table要素内の.span*から float 指定を削除。
- input 用グリッドクラスの廃止
- input 用のグリッド mixin および span クラスを廃止。
- 新しいグリッドシステムでは input 要素はデフォルトで
width: 100%;。 - input 要素に直接クラスを指定するより、グリッドカラムに 100% 幅の input 要素を置く方が良い。
- すべての
.containerにwidthの代わりにmax-widthを指定することで、navbar のようなコンポーネントで起こる問題を防止できる。
文字
-
@altFontFamily変数の廃止。 - レスポンシブ時の jumbotron 用
font-sizeを調整。 -
pxの代わりにremの使用を検討。IE8 用フォールバックでpxは必要。
テーブル
-
table.infoクラスの廃止。 - ネスティングのためにより狭いスコープのテーブル用クラスを検討。
画像
- サムネイルスタイルの整理。
.thumbnailと同じなので.img-polaroidを廃止。通常のインライン(または inline-block)画像には.img-thumbnailを使う。複数の要素からなるコンポーネントには.thumbnailを使う。
ボタン
不明瞭でセマンティックでないものは廃止。
-
.btn-inverseの廃止。だってこれ マジで 意味わからんし。 - デフォルトのデザインを改良(外側の box-shadow 廃止)。
-
disableボタンのホバー時にbackground-colorが変わるのを防止するためスタイルをリファイン。
フォーム
フォーム関連コントロールはデフォルトで 100% 幅。input グループをオーバーホールする。フォームステートをシンプルにする。
- input 要素のボックスモデルを変更。すべての input 要素をデフォルトで
box-sizing: border-box;width: 100%;に変更。これは各自で input 要素のサイズを指定する必要があることを意味する。3.0 以前では input 要素には約220px を指定していた。 - デフォルトのデザインを改良(外側の box-shadow 廃止)。
-
.input-group用のinput-prependinput-appendを廃止。これらのクラスは各要素に指定する。また、ボタンを使うにはマークアップの追加が必要。- input やアドオンをラップする親要素に
.input-groupクラスを指定する。 - テキストを prepend/append するには、
.addonの代わりに.input-group-addonを使う。 - ボタンを prepend/append するには、その要素のクラスとして
.btnの代わりに.input-group-btnを使う。
- input やアドオンをラップする親要素に
-
.form-searchの廃止。 -
fieldset[disabled]をサポート。disabledなfieldset内のフォームコントロールを適切なスタイルにする。 - グリッド input の
.controls-rowを廃止。3.0 では input 要素がwidth: 100%;であり、別途 input 用グリッドを実装したくないので廃止した。代わりに標準のグリッドシステムで input 要素群を.rowでラップし、個別の input を.span*のカラムにすればよい。 -
.input-block-levelmixin とクラスを廃止。input 要素がwidth: 100%;なので冗長になるため。input 要素はdisplay: inline-blockなので、block にしたい場合は個別に指定する必要がある。 - Horizontal フォーム(ラベルと input 要素が横に並ぶフォーム)はモバイルファーストになる。768px 幅未満ではラベルと input 要素が1行ずつスタックし、それ以上の幅ならフロートして横に並ぶ。
- チェックボックスとラジオボタンは
divでラップする。label.checkboxの代わりにlabel内にdiv.checkboxが必要。これでラベルもクリッカブルになる。 - インラインのチェックボックスとラジオボタン用クラスの追加。
radio.inlineの代わりにlabelに.radio-inlineクラスを指定する。インラインのチェックボックスとラジオボタンはdivでラップする必要はない。 - 分割ドロップダウンと通常のドロップダウンのクラス名を分ける。
- フィールドのステート(disabled)を個々の input 要素に適用する。
- 新しいインプットグループ内でボタングループが機能するようにする(border-radius で問題あり)。
-
.help-inline.help-blockをリファクタリング。 - フォームコントロールのマージンを改善。現在上書きしまくっているため、フォームコントロールはデフォルトではマージン無しがいいかも。
アイコン
- フォントアイコン!PNG を廃止して Glyphicon を v1.7 @font-face にする。
- すべてのアイコンのクラスに プリフックスを追加:
.glyphicon-
レスポンシブユーティリティ
- 新しいモバイルファーストのアプローチに合わせて responsive-utilities.less をリファクタリングする。
- メディアクエリーの変更をドキュメントに反映する。
ボタングループ
- ボタングループ内でドロップダウンを使えるようにリファクタリングする。
- 通常のドロップダウンを分割ドロップダウンのクラスを分ける。
ラベル、バッジ、カウンター
色々検討が必要。
-
.labelコンポーネントの角丸を小さくする。 -
.labelのサイズを親要素のfont-sizeに合わせて自動で調整する。 - クソなので
.badgeを廃止。 - 色オプション無しの
.counterとして.badgeを再実装する。OS X の Mail.app ぽくできるだけニュートラルにする。
ヒーローユニット(ジャンボトロン)
(訳注:ジャンボトロンは商標です…)。
一般的な変更
-
.hero-unitから.jumbotronへクラスを変更。関連する変数も合わせて変更する。 - 見出しの
font-weightを軽くする。ボールドの代わりにセミボールドを使う。
モバイルファーストスタイルの改善
- 初期状態では full-width にするか(角丸なし、など)?
- ブレークポイントごとに文字のスタイルを改善するか?
ナビゲーション
ナビゲーションバー
-
.navbar-searchの廃止。フォームレイアウトから.navbar-searchを廃止したため。.navbar-formは生かす予定。 - navbar とサブコンポーネントのデフォルトスタイルをオーバーホール:
- ドロップダウンメニューのキャレット(インジケーターでなくメニューとして追加されている)を廃止。ドロップダウンメニューは navbar の端に位置する。
- 縦の分割線は navbar の高さいっぱいには拡張しない。
- navbar の box-shadow、グラデーションを廃止。
- 44px だった navbar の高さを モバイルでは 62px へ、デスクトップでは 50px へ変更。
-
.navbar-innerの廃止。インナーの div は不要。 - 標準・インバース navbar で
.btn-navbarが:hover:focusのステートを含むように変更。 - モバイルでのナビゲーションリンクのアクティブステートを変更。
- nabvar 内の非ナビゲーションリンクサポートの改善。
.navbar-linkが必要なのがクソ。 - nabvar 内でのフォーム・ボタンサポートの改善。スタイル上書きしまくりでクソすぎる。改善しよう。
- ドロップダウンや他のコンポーネントを扱いやすくするため、collapsed navbar の振る舞いを改善。
Navs
モーダル
-
.hideが不要になりました。クラッシュを避けるためにユーティリティクラスで!importantを使うようにしたため、モーダルで.hideを指定しなくて済む。現在は modals.less で直接display: none;を指定している。3 にアップグレードする際は、既存のモーダルから.hideクラスを削除しておくこと。 - モバイルファーストのためにモーダルをリビルドする
- fixed の代わりに相対位置を使う。
- 内容に合わせて高さが可変となるので
overflow-y: scroll;は不要。
-
.modal-small.modal-largeのサイズオプションを加えるか検討中。 - 縦横位置の改善。
ドロップダウン
- サブメニュー廃止。これが使われているのを見たことがないし、JavaScript でインタラクションやキーボードナビゲーションのコードを書くのはマジクソ。なので廃止。
Support for submenus—only CSS, no JS enhancements—are back in 3.0.0-wip for the time being. Still unsure if they’ll remain at launch though.
— Twitter Bootstrapさん (@twbootstrap) 2013年2月17日
サムネイル
-
.thumbnailsメタコンポーネントの廃止。代わりにグリッドシステムを使うこと。.thumbnailのスタイルは利用可能だが、グリッドカラムのようなwidthを指定した親要素が必要。
カルーセル
- リデザイン!キャプション同様に前後ナビゲーションのスタイルを軽くする。
- カルーセルコントロールのマークアップを変更。
.carousel-control内に<span class="control">が必要です。
まとめ
クソクソ書いてますがこれは @mdo がそう書いてるためいたしかたなくです。ご了承ください。
モバイルファーストということで fluid(リキッド)レイアウトが標準というかこれのみになったことが一番大きい変更でしょうか。変数名のキャメルケースや .navbar-inner の廃止が個人的にはあいたたたですが、よりシンプルに改善されるのは良いことですね。リリースされるのを wktk しつつ、色々準備しておかなければと思いました。本家の情報が更新されたら、このページにも随時反映する予定です。
間違いや抜けなどありましたらお知らせください。ではまた。