reset.cssとnormalize.cssに続く新しいリセット用CSS、モバイル対応・最近の実装スタイルを考慮したスタイルシート -sanitize.css

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を適用

top of page

©2016 coliss
o