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>