width指定時の横幅
width/padding/borderの扱い方が,InternetExplorer(以下IE)/OperaとMozillaでは異なるようだ.
細かいバージョンは以下の通りで,全部Windows2000 Professional+SP3上で動いている.
- InternetExplorer 6.0.2800.1106+SP1+細かい更新が色々
- Opera日本語版 7.03
- Mozilla1.3(Wazilla1.3)
例えば,以下のhtmlを表示したとしよう.
<html> <style type="text/css"> #width-sample1{ width:100%; background:#dcdcdc; } #width-sample2{ width:100%; background:#dcdcdc; padding:1em; } #width-sample3{ width:100%; background:#dcdcdc; padding:1em; border:5px solid black; } </style> <body> <div id="width-sample1"> sample1:widthは100%なのさ~. </div> <div id="width-sample2"> sample2:widthは100%なのさ~.paddingを指定したのさ~. </div> <div id="width-sample3"> sample3:widthは100%なのさ~.paddingとborderを指定したのさ~. </div> </body> </html>
IE/Operaでは,sample1/2/3全て同じ横幅となる.Mozillaの場合は,横幅が異なり,sample1<sample2<sample3となる.仕様から言うとMozillaが正しいらしい.CSS1/2ではwidthはpaddingやborderを含まない幅のことで,width+padding+borderが表示する幅となる.個人的には,paddingやborderまで含めてwidthを表示するIEやOperaのほうが扱いやすいと思う.
Mozillaにpadding/borderの幅まで含めてwidthを表示させるには,-moz-box-sizingの指定を行う.CSS3には属性box-sizingがあるが,CSS3自体がまだ固まっていないし対応しているブラウザもないので,指定しても意味がない.
<html> <style type="text/css"> *{ box-sizing:border-box; /* CSS3なのでまだ使えない */ -moz-box-sizing:border-box; /* Mozillaの隠し属性らしい */ } #width-sample1{ width:100%; background:#dcdcdc; } #width-sample2{ width:100%; background:#dcdcdc; padding:1em; } #width-sample3{ width:100%; background:#dcdcdc; padding:1em; border:5px solid black; } </style> <body> <div id="width-sample1"> sample1:widthは100%なのさ~. </div> <div id="width-sample2"> sample2:widthは100%なのさ~.paddingを指定したのさ~. </div> <div id="width-sample3"> sample3:widthは100%なのさ~.paddingとborderを指定したのさ~. </div> </body> </html>
また,Operaの場合box-sizing:border-bix;
を指定すると,リンクの下線が消える.例えば,以下のhtmlをOperaで表示すると,googleへのリンクには下線がない.
<html> <style type="text/css"> *{ box-sizing:border-box; } </style> <body> <a href="http://www.google.co.jp/">googleへリンクしたのさ~</a> </body> </html>
明示的に下線を指定すれば対処できる.
<html> <style type="text/css"> *{ box-sizing:border-box; } a{ text-decoration:underline; } </style> <body> <a href="http://www.google.co.jp/">googleへリンクしたのさ~</a> </body> </html>