レスポンシブなwebサイトを作るとき最近の流行りはメディアクエリをrem
指定だ!と言うことでrem
指定にチャレンジしてみた所、どうやら条件によってブラウザの挙動が違っているっぽかったのでメモ。
htmlタグにfont-size
が指定されているとブラウザによって挙動が異なる!?
em
指定をしていた時に簡単にem指定ができる様にhtml
タグにfont-size: 62.5%;
を指定したりしていました。こんな風にhtml
タグでfont-size
を変更しているとrem
で指定したメディアクエリの解釈が違っているようです。
サンプル
html { font-size: 62.5%; } body { font-size: 16px; font-size: 1.6rem; background-color: #FFF; } // メディアクエリ @media screen and (min-width: 75rem) { background-color: #54C8D3; }
「rem」とは「root」+「em」の意味で、root要素(html要素)に対して相対的にフォントサイズが指定できます。
オンズ » 【CSS3】フォントサイズは「rem」で指定するのが最適解。
rootであるhtml要素にfont-size: 62.5%;
を指定しているのでbodyは1rem = 10px
換算になっています。
メリアクエリのrem
の解釈の仮説
- メディアクエリで使っている
rem
もhtml要素に対しての相対値なら 750px で切り替わる - メディアクエリで使っている
rem
はhtml要素の指定を無視するなら75 × 16px(ブラウザデフォルトフォントサイズ) = 1200px で切り替わる
ブラウザで確認する
確認したOS: Mac OS X Yosemite ( 10.10 )
ブラウザ | 切り替わったポイント | |
---|---|---|
Chrome (42.0.2311.90) | 1200px | メディアクエリのremはhtml要素の指定を無視 |
Safari (8.0.5) | 750px | メディアクエリのremはhtml要素に対しての相対値 |
Firefox (37.0.2) | 1200px | メディアクエリのremはhtml要素の指定を無視 |
Vivaldi (1.0.118.19) | 1200px | メディアクエリのremはhtml要素の指定を無視 |
メディアクエリのremの挙動
Safariだけがhtml要素の指定に対しての相対値を取り、確認した限り他のブラウザはhtml要素の指定は無関係なようです。
レスポンシブWEBデザインで最近の流行りのブレイクポイントをrem
で指定する時はhtml
タグにfont-size
を指定しているとブラウザによってデザインの切り替わるブラウザサイズが変わってしまう事になってしまうので気をつけた方が良さそうです。フォントサイズをrem
指定にしようとすると計算して書いてあげないとダメになるので少しメンドーかなと思いますが、、、
メモ: コリスさんでも紹介されていたSchema UI Frameworkではhtml
タグにfont-size
の指定はありませんでした。
参考

テスタメントシュピーゲル (2) (上) (角川スニーカー文庫)
- 作者: 冲方丁,島田フミカネ
- 出版社/メーカー: KADOKAWA/角川書店
- 発売日: 2015/04/28
- メディア: 文庫
- この商品を含むブログを見る