box-sizingで横幅の算出方法を指定する--FirefoxとSafariのCSS対応
CSS 3の勧告候補「Basic User Interface Module」では、横幅や高さの算出方法を指定するbox-sizingというプロパティが定義されている。これまではFirefoxとOperaが対応しているだけだったが、Safari 3やInternet Explorer 8(ベータ版)でもサポートされ、主要な4種類のモダンブラウザが対応したプロパティとなっている。
今回はこのbox-sizingプロパティの機能と、各ブラウザでの表示を確認していきたい。
box-sizingプロパティ
CSSではHTML/XHTMLでマークアップした部分の横幅をwidth、高さをheightプロパティで指定することができる。このときbox-sizingプロパティを利用すると、widthやheightで指定した横幅や高さに、パディングやボーダーの大きさを含むかどうかを指定することができる。
box-sizingプロパティで指定できる値はcontent-boxとborder-boxの2種類となっている。content-boxと指定した場合はパディングとボーダーの大きさを含まずに、border-boxと指定した場合は含めて処理を行う。
たとえば、次のサンプルは<div>でマークアップした部分の横幅を300ピクセル、パディングを30ピクセル、ボーダーを30ピクセルに設定して、画面の中央に配置したものだ。上の<div>には「box-sizing: content-box」、下の<div>には「box-sizing: border-box」と指定してある。
すると、上の場合はコンテンツ部分だけが、下の場合はボーダーまで含めた部分が横幅300ピクセルで表示されていることがわかる。
div {
width: 300px;
border: solid 30px #ffaa00;
padding: 30px;
background-color: #ffff00;
margin: 20px auto;
}
div#content {
box-sizing: content-box;
}
div#border {
box-sizing: border-box;
}
<div id="content"> こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。 </div> <div id="border"> こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。こんにちは。 </div>
なお、box-sizingプロパティを指定せずに標準の状態で表示すると、パディングやボーダーを横幅に含まないcontent-boxでの表示となる。
また、「box-sizing: border-box」と指定した場合、文字や画像を表示したコンテンツ部分(コンテンツボックス)の横幅は、widthの値からパディングとボーダーの大きさを引いた長さとなる。このとき、コンテンツボックスの横幅がマイナスになることは認められていない。
- 特集: FirefoxとSafariのCSS徹底検証 (65件)
- 今日のトップ記事
- 昨日
- 5日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ

「Google Chrome」の拡張機能、開発者からのアップロード受付を開始
IMAPでGmailを受信、最も手っ取り早いのは?Windows 7、Ubuntu 9.10、Snow Leopardのメーラー比較
Snow LeopardではNTFSをサポート--その源流を訪ねる(2)
MS運営のオープンソース開発プロジェクト支援サイト「CodePlex」を探検する(2)
Snow LeopardではNTFSをサポート--その源流を訪ねる(1)
フォトレポート:「Windows Server 2008 R2」--あまり知られていない有用な機能10選
企業ITシステムの企画、構築、運用のイロハ
【最終警告】パンデミック対策特集
大丈夫?あなたの会社のセキュリティ対策
高まるiSCSIストレージへの注目度
電力に"ふた"をする独自の省エネ機能とは!?
―エン・ジャパン厳選求人☆毎週更新―
100万円で実現!中小企業の情報漏えい対策