reset.cssとnormalize.cssに続く新しいリセット用CSS、モバイル対応・最近の実装スタイルを考慮したスタイルシート -sanitize.css
Post on:2015年4月13日
HTMLの各要素のブラウザごとに異なる差異をなくし、スタイルをリセットするスタイルシート「sanitize.css」を紹介します。
「Normalize.css」の共同開発者:Jonathan Nealの新しいプロジェクトで、最近の実装スタイルにあったアプローチがとられており、スマホなどのモバイルにも対応しています。
sanitize.css
sanitize.css -GitHub
sanitize.cssとは
sanitize.cssはHTMLのあらゆる要素を各ブラウザでの差異をなくし、整合性をもたせてレンダリングさせるスタイルシートで、ライセンスはCC 0で利用できます。
-
- 有用なデフォルトはそのまま
- 多くのリセット用スタイルシートは異なり、有用なデフォルトのスタイルは維持します。
-
- スタイルの正常化
- さまざまな種類のエレメントのスタイルを正常化します。
-
- バグの修正
- ブラウザごとの異なるスタイルやバグを修正します。
-
- ユーザビリティの改善
- ほんのわずかな改良でユーザビリティを改善します。
-
- 最近の実装スタイルへの対応
- ボックスモデルやborder-widthなど、最近の実装方法にあったスタイルに直します。
ちなみに、Normalize.cssは現在v.3で、最新版はv.3.0.2です。
Normalize.cssって何?は下記ページを参考にしてください。
sanitize.cssの対応ブラウザ
対応ブラウザは、下記の通りです。
- Chrome 39-40+
- Firefox 34-35+
- Safari 7-8+
- Internet Explorer 10-11+
- iOS 7-8+
- Android 4.3-4.4+
- Windows Phone 8.1+
ブラウザのサポートはメジャーブラウザの最新バージョンと一つ前のバージョンです。
新しいバージョンがリリースされると、その最新バージョンをサポートし、三つ前のバージョンのサポートはやめます。
sanitize.cssのスタイル
sanitize.cssの2015/3/31版の中身です。
.scssでも提供されています。
/*! sanitize.css | CC0 Public Domain | github.com/jonathantneal/sanitize.css */ pre,textarea{overflow:auto} [hidden],audio:not([controls]),template{display:none} details,main,summary{display:block} input[type=number]{width:auto} input[type=search]{-webkit-appearance:textfield} input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none} progress{display:inline-block} small{font-size:75%} textarea{resize:vertical} [unselectable]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} *,::after,::before{box-sizing:inherit;border-style:solid;border-width:0} *{font-size:inherit;line-height:inherit;margin:0;padding:0} ::after,::before{text-decoration:inherit;vertical-align:inherit} :root{-ms-overflow-style:-ms-autohiding-scrollbar;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;box-sizing:border-box;cursor:default;font:16px/1.5 sans-serif;text-rendering:optimizeLegibility} a{text-decoration:none} audio,canvas,iframe,img,svg,video{vertical-align:middle} button,input,select,textarea{background-color:transparent;color:inherit;font-family:inherit;font-style:inherit;font-weight:inherit;min-height:1.5em} code,kbd,pre,samp{font-family:monospace,monospace} nav ol,nav ul{list-style:none} select{-moz-appearance:none;-webkit-appearance:none} select::-ms-expand{display:none} select::-ms-value{color:currentColor} table{border-collapse:collapse;border-spacing:0} ::-moz-selection{background-color:#B3D4FC;text-shadow:none} ::selection{background-color:#B3D4FC;text-shadow:none} @media screen{[hidden~=screen]{display:inherit} [hidden~=screen]:not(:active):not(:focus):not(:target){clip:rect(0 0 0 0)!important;position:absolute!important} } /*# sourceMappingURL=sanitize.css.map */
sanitize.cssの注目すべきスタイル
sanitize.cssで使用されている注目すべき7つのスタイルを紹介します。
「Universal inheritance」として、スタイルのコントロールがしやすいように設定。
*, ::before, ::after { box-sizing: inherit; } * { font-size: inherit; line-height: inherit; } ::before, ::after { text-decoration: inherit; vertical-align: inherit; }
ボックスモデルは「border-box」を採用。
参考:リファレンス、リファレンス
:root { box-sizing: border-box; }
より小さいフォントサイズでもすべてのブラウザで読めるように。
参考:リファレンス
small { font-size: 75%; // All browsers }
Monospaceのフォントを首尾一貫してレンダリング。
参考:リファレンス
code, kbd, pre, samp { font-family: monospace, monospace; }
borderの幅が予期された通りに描かれるように。
参考:リファレンス
*, ::before, ::after { border-style: solid; border-width: 0; }
ドロップシャドウを含んだテキストでも読みやすいように。
参考:リファレンス
::selection { background-color: $selection-background-color; text-shadow: $selection-text-shadow; }
コンテンツをスクリーンリーダーからではなく、スクリーンから隠すように。
参考:リファレンス、リファレンス
@media screen { [hidden~="screen"] { display: inherit; } [hidden~="screen"]:not(:active):not(:focus):not(:target) { clip: rect(0 0 0 0) !important; position: absolute !important; } }
sanitize.cssの適用
sanitize.cssをHTMLの各要素に適用すると、こんな感じになります。
左:デフォルトの表示、右:sanitize.cssを適用
sponsors