ブラウザーのサイズによって文字の大きさを少し変えるようにしたので、それに合わせてem
を使ってレイアウトするようにした。縦のリズムもちゃんと計算してやろうかと思ってるけど面倒になってきた。やって思ったのはやっぱりcalc()
が必要ということ。違う単位を混ぜられるのはとても手軽だ。Sassでも無理だし、将来的にもできるようにならないし。faviconもちょっとだけ変えた。
カラムは本文を9カラムで48em
程度にしたかったので以下のようにした。
$column: 3.5em;
$gap: 1em;
これで9カラムで47.5em
になる。Style Guideだとそこらでダブルクリックするとカラムがオーバーレイ表示されるようになってる(_grid-overlay.scss使った)。12カラムが収まる場合はマルチカラム……にしたかったけど、とりあえずはタイトルや日付けをちょっとずらすだけにした。マルチカラムにまだ慣れてなくて、間に画像やpre
要素が挟まるとうまくスタイル書けない。ちゃんとセクショニングしてしっかりマークアップしとくとマルチカラムにしやすそうだなぁ。
文字の大きさの切り替えはあまり細かく考えずに計算で誤魔化した。
body {
// Decrease font size
$too-narrow: $safe-for-content * 0.875 * 0.875;
@media screen and (max-width: $too-narrow) {
font-size: 87.5%; // 14px
}
// Increse font size more
$wide-enough: $safe-for-full * 1.25 * 1.25;
@media screen and (min-width: $wide-enough) {
font-size: 125%; // 20px
}
}
使うサイズを先に決めて、その倍率の二乗をかけたサイズに横幅が到達したら切り替えている(4段階)。根拠はない。ただこの処理もem
を使って振り分けているので、実装によってはおかしくなりそう(切り替えぎりぎりのあたりだと条件を満たして切り替えた後に条件が満たされなくなって元に戻るの無限ループとかありえそう)で不安がある。ここだけはpx
にした方が安全そう。
リリース版のSassではまだMedia Queriesで変数を利用することができないので、こういう書き方をするためには開発版をインストールする必要がある。
$ gem install --prerelease sass
開発版では%foo
という@extend
専用のプレースホルダー・セレクターも書けるようになったりしててとても楽しいと思うので、大体Sass覚えたよーという人は試すとライフチェンジングするはず。
フォントはあまり変えていないけど、見出しに使っていたAndikaはやめた。Operaでのバグの件でLucidaスタックに戻したい感じではある……。
後はフッターのアイコンを_corporate-colors.scssを使ってオンマウスで色が変わるようにしたくらい。あんま意味ないので最初からカラフルでもいいかも。
em
にした理由は主に2つある。
今のところpx
はほぼ絶対的なサイズとして扱えてて、かつ、cm
のように非直観的な単位ではないのでだいたい期待した通りに動いてくれるけど、今後のデバイスとOSやブラウザーの実装次第ではpx
では駄目になるんじゃないかと思っていることがひとつ。画面サイズとドットピッチ、DPI、最後にスケーリングという様々な要素が絡みあう世界をpx
だけでどうにかされることを期待するのはあまりに甘いと思う。em
とfont-size
の%
指定を組み合わせなら、そのあたりはブラウザー側で(結果的に)吸収してくれることになり……そう……というかなって欲しい。
勿論DPI等を意識しないという意味では%
で全部やっても良いと思うんだけど、%
ではどうしてもデバイス(というかブラウザー)の描画領域を強く意識することになる。そもそもの基準が描画領域になるので、このサイズに収まるようなレイアウトという考えから脱却できない。
つまりもうひとつは1行の文字数を基準にしてレイアウトしたくなったということ。今までも全角50文字前後になるようにしてたつもりだけど、px
単位に置き換えてやってた。Sass使い始めてからはSassでやればいいかなーと思ってたけど、せっかくem
単位あるんだしそれ使うのがいいよね! とかそういう軽い感じ。
em
だと安心とかそういうことはありえないけど、この1px
へのこだわりを捨てられた感じはちょっと開放感ある。ただ最初にも書いたけどやはりcalc()
がないと辛そう。違う単位を混ぜられて簡単便利っていうのも勿論あるんだけど、無いとどうしてもem
単位をpx
単位等に脳内で置き換えてイメージしてからCSSを書きがちになる。それではem
を使う意味が薄れてしまうので、em
であるべきところはem
、px
であるべきところはpx
で書けるcalc()
は重要になるんじゃないかと思う。
無駄に長くなった。em
の話はまた別に書こうかな。%
を使ったカラム・レイアウトはダメそうとかそういうのも含めていろいろ書けそう。などと書くとだいたい書かない法則。
em
単位でのMedia Queriesで無限ループになりそうという心配は杞憂だった。
For example, in HTML, the ‘em’ unit is relative to the initial value of ‘font-size’.
と書いてあるのでbody
要素の文字サイズを変更しても影響ない。