あまり遭遇しない5つのマニアックなバグを修正
どのバグもすぐには問題を突き止められず、解決までに数時間~半日を要してしまった。
殆どが各ブラウザのレンダリング差異によるもの。
IE が html5.js を認識しない
1 2 3 | <!--[if lt IE 9]> <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> |
- 発生したブラウザ
- IE 7/8
- バグの原因
- /body 直前に挿入していた。
- 解決策
- head もしくは body 直下に挿入する。
「ページを描画する前に読み込む必要はない」と完全に思い込んでいた…。
モダンブラウザがメディアクエリを認識しない
- 発生したブラウザ
- IE 11/Windows版 Safari/Android ブラウザ
- バグの原因
- 123<!-- [if IE]>// コード<![endif]-->
- 解決策
- 123<!-- [if lt IE 9]>// コード<![endif]-->
何らかのIEハックを指定するときは、バージョンを指定しないとダメみたい。
しかしWindows版 SafariとAndroid ブラウザが、なぜバグったのかは謎…。
しかしWindows版 SafariとAndroid ブラウザが、なぜバグったのかは謎…。
親要素に padding が効かない
- 発生したブラウザ
- Firefox
- バグの原因
- 不明
- 解決策
- 子要素全体をブロック要素でネストする。
clearfix を指定すると上部に謎の余白
- 発生したブラウザ
- Firefox
- バグの原因
- clearfix の display: block;123content: "";display: block;clear: both;
- 解決策
- display: table; に変更。
- 123content: "";display: table;clear: both;
overflow: hidden; を指定しているのに float で謎の余白
1 2 3 4 5 6 7 8 | <div id="block-main"> <h1>秋のスポーツ大会</h1> <img src="" alt=""> <dl> <dt>開催日時</dt> <dd>2015/07/11</dd> </dl> </div> |
1 2 3 4 5 6 7 8 9 10 11 | #block-main { width: 400px; overflow: hidden; padding: 10px; border: 1px solid #ccc; img { float: left; margin-right: 20px; } } |
- 発生したブラウザ
- Firefox/Google Chrome
- バグの原因
- 不明
- 解決策
- overflow: hidden; をやめて clearfix にする。
コメントを投稿する