display:table
を使用して2ペインの小さなレイアウトを作成しています。スペーシング(背景画像からも)の場合は、padding
を使用します。利用可能なスペースから子供が正確にwidth:50%
を持つようにする必要があるので(div
のパディングを考慮して)、私はbox-sizing:border-box
を使用します。Chrome対ボックスサイズ:ディスプレイの境界ボックス:
これはOperaでうまくいきますが、Chromeではbox-sizing:border-box
、さらには-webkit-box-sizing:border-box
も暗黙のうちに無視されます。
私はこの問題を示すデモを作成しました。 2つの赤いボックスは、正方形である必要があり、青いボックスは、幅と高さが200pxのようになります。
<div id="table">
<div id="left">
Something on the left side
</div>
<div id="right">
Something on the right side
</div>
</div>
とCSS:http://jsfiddle.net/fabb/JKECK/
は、ここでHTMLソースです
#table {
display: table;
/*border-collapse: collapse;*/
width: 200px !important;
height: 200px !important;
box-sizing: border-box;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
margin: 0;
border: 1px solid blue;
padding: 60px 20px;
}
#table #left, #table #right {
display: table-cell;
width: 50%;
box-sizing: border-box;
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
margin: 0;
border: 1px solid red;
padding: 0;
}
は、このAですChromeのバグ?または私は何か間違っているのですか?
ありがとうございます**ノート** - 回避策を見つけるのに役立ちました。私は**テーブルから 'display:table'を削除しました。これは私のレイアウトをChrome、Opera、Firefoxで動作させるものです。幸いにも私に影響を与えない2つの欠点があります:1)単一のセルがもう全高に及ばない、2)他の 'display:table * 'が干渉する可能性があります。何か追加情報がありましたか?**なぜ** display:tableがある要素が 'width'や' height'のプロパティを壊してしまうかもしれませんか? – fabb
"テーブルの幅が壊れやすい"これは、これが一種のインラインブロックモデル(歴史的理由 - 人々はコンテンツに基づいて拡張できることが望ましいかもしれない)、spec [link](http:// www .w3.org/TR/CSS2/tables.html#model)。この問題を解決するには、 'table-layout:fixed'を試してみてください(http://www.456bereastreet.com/archive/200704/how_to_prevent_html_tables_from_becoming_too_wide/) – vincicat
p.s.セルを全高に渡りたい場合は、flexboxを試してください:[Webkit updated version](http://www.the-haystack.com/2012/01/04/learn-you-a-flexbox/)または[CSS3 flexボックス、サポートされているバージョン](http://hacks.mozilla.org/2010/04/the-css-3-flexible-box-model/) - – vincicat