オレオレノーマライズ CSS「Neo's Normalize」を作った
Normalize.css や、Bootstrap 4 から採用されている Reboot などの思想を基に、オレオレノーマライズ CSS を作った。その名も「Neo's Normalize」。
動作デモはコチラ。
作った経緯
自分のメインサイト Neo's World では、古くは全称セレクタによる Reset.css、最近は Normalize.css をカスタムしたものを使っていた。また、はてなブログ類でも Normalize.css が組み込まれたテーマを基にカスタマイズして使っていた。
Normalize.css は大変優秀なのだが、個人的にはレガシーブラウザをサポートしなくていいかなーとか、フォーム部品のノーマライズが多くてファイルサイズがかさばるな〜とか思って、軽量版を作りたい、と思ったのがきっかけ。
そうしているうちに Bootstrap 4 が正式リリースされ、中身を見ていると Reboot という独自のノーマライズ CSS が用意されていることに気付いた。Normalize.css よりももう少しスタイリングされていて、特に「margin は bottom にだけ付ける」というルールが良いなと思った。
そこで、Normalize.css と Reboot のいいとこ取りをして、自分のサイト群のベースデザインに使えるスタイル定義をブチ込んで、独自のノーマライズ CSS を作ることにした。
方針
Neo's Normalize の製作方針は次のとおり。
- 自分が使うモダンブラウザで「大体」平仄が取れていれば OK とする。
- レガシーブラウザは崩れようが認識されなかろうが無視。
- iOS 端末のことは若干考慮するが、Android 端末は持っていないので無視。
- 全部をキッチリ揃えきろうとも思っていない。ガチガチにしたいところはサイトを作る時に固定すればいい。
- 自分があまり使わない要素のノーマライズは入れない。
- フォーム部品とか多用しないし、HTML5 から登場した新要素もあれやこれや使うことはないので、そういうモノのノーマライズは対象外。
- 自分がサイトを作る時、必ず入れる指定を入れておく。
html要素にoverflow-y: scrollを入れて、スクロールバーの有無で画面幅が変わらないようにするとか。
- 自分が作るサイトのベースデザインを予め取り入れておく。ノーマライズというよりは基礎的なスタイリングも兼ねる感じ。
- そのため、フォントやカラーリングも指定している。
- マージンのとり方は Reboot にならい、下方向にだけ付ける方針とする。
- コレがけっこう分かりやすくなるのでよさげ。
- マージンやパディングなどのサイズ指定は
remかemで指定する。
こんな感じで、完全にオレオレ用のノーマライズを作った。
主な機能・定義
主な機能、というか、主にスタイル定義したものを紹介しておく。
html要素- フォントを「パーフェクト設定」なサンセリフ系に変更。
2018年以降はコレで決まり!Web サイトで指定するゴシック体・明朝体・等幅の font-family 設定 - iOS 向けのフォントサイズ調整や慣性スクロールなど。
- フォントを「パーフェクト設定」なサンセリフ系に変更。
body要素- ページ全体の余白をなくす : これまで
paddingも指定したりしていたけど、どうもmarginだけで良いみたい。 line-heightを1.7に指定 : 個人的にこのぐらいの行間で落ち着けた。overflow-wrap(word-wrap) を指定 : IE11 はoverflow-wrapに対応していないようだったので両方指定。
- ページ全体の余白をなくす : これまで
details・mainにdisplay: blockを指定 : IE11 向け- よく使うブロック要素の
margin-topを0に、margin-bottomを1remに統一。 dd・li・blockquote・figure要素は左マージンに2.5rem開けるようにした。ol要素で3桁の箇条書き項番が出てきても大丈夫なように2.5remとした。li要素については、ol・ulがpadding-leftを持っているので、コレを解除しておいた。
- 見出しサイズを調整 :
h1要素を2emとし、h5・h6は小さくなりすぎるので1emにした。 addressやemなど、斜体になる要素をリセット。- 元々イタリックにするために生まれた
i要素だけは未指定で。
- 元々イタリックにするために生まれた
table要素内のcaption・thと、dt・em要素あたりを太字にした。- 等幅フォントを使用する要素には「パーフェクト設定」な等幅フォントを指定。
code・kbd・samp・varに改めてfont-size: 1emと指定 : IE11 向け。- フォーム部品のマージンをなくし、フォントと文字サイズを継承させるようにした。
blockquoteは緑枠、preやcodeなどは灰色枠にスタイリング。figureは左に太枠線を置いてスタイリングした。hr要素はborder-bottomで罫線を引いた。fieldset・hr・tableなどで使う罫線の色を灰色に統一。summary要素は開閉できる UI になるのでcursor: pointerを指定。
こんなところか。何か気付き次第ちょこちょこ直していこうと思うので、よかったら使ってみてほしい。