パーセンテージを幅として使用して、流動的なレイアウトを作成しようとしています。そうする私はこれを試しました:
<div style="width:50%; display:inline-table;">A</div>
<div style="width:50%; display:inline-table;">B</div>
その場合、それらは1行に並ぶことはありませんが、次のようにそれらの間の改行を削除すると:
<div style="width:50%; display:inline-table;">A</div><div style="width:50%; display:inline-table;">B</div>
その後、正常に動作します。問題はどこにありますか?どうすれば絶対位置とフロートを使用せずにそのような何かを行うことができます。
追伸英語でごめんなさい。追記私は自分の問題をうまく説明したいと思います
問題は、何かがインラインである場合、すべてのホワイトスペースが実際のスペースであるということです。そのため、要素の幅に影響します。 floatまたはdisplay:inline-blockの使用をお勧めします。 (divの間に空白を残さないでください)。
デモ: http://jsfiddle.net/N9mzE/1/
<div style="width:50%; display: inline-block">A
</div><div style="width:50%; display: inline-block;">B
</div>
問題は、HTMLでそれらの間に新しい行がある場合、inline-table
またはinline-block
を使用するときにそれらの間にスペースができることです。
50%+ 50%+そのスペース> 100%。そのため、2番目のスペースは最初のスペースより下になります
ソリューション:
<div></div><div></div>
または
<div>
</div><div>
</div>
または
<div></div><!--
--><div></div>
アイデアは、HTMLの最初の終了divタグと2番目の開始divタグの間にスペースを入れないことです。
PS-私はinline-block
の代わりにinline-table
も使用します
これにparent
DIV font-size:を指定します。このように書く:
<div style="font-size:0">
<div style="width:50%; display:inline-table;font-size:15px">A</div>
<div style="width:50%; display:inline-table;font-size:15px">B</div>
</div>
次のCSSでdivの周りにそれらをラップします
.div_wrapper{
white-space: nowrap;
}
絶対位置とフロートを使用せずに、そのようなことを行うにはどうすればよいですか?
inline-block
アプローチ(他の回答で述べたように)は他のアプローチです:
.container {
display: table;
width: 100%;
}
.container div {
display: table-cell;
}
<div class="container">
<div>A</div>
<div>B</div>
</div>
.container {
display: flex;
}
.container div {
flex: 1;
}
<div class="container">
<div>A</div>
<div>B</div>
</div>
参考として、 this CSS-tricks post は、これを達成するためのさまざまなアプローチを要約しているようです。
<div id="wrapper" style="width: 400px">
<div id="left" style="float: left; width: 200px;">Left</div>
<div id="right" style="float: right; width: 200px;">Left</div>
<div style="clear: both;"></div>
</div>
私はこの質問がインラインブロックを望んでいたことを知っていますが、 http://jsfiddle.net/N9mzE/1/ in IE 7(私がサポートしている最も古いブラウザ仕事)。divは隣り合わせではありません。
OPは、フロートが気に入らなかったため、フロートを使用したくないと述べました。まあ...私の意見では、どのブラウザでも奇妙に見えない良いウェブページを作成することが主な目標であり、あなたはフロートを使用してこれを行います。
正直なところ、私は問題を見ることができます。フロートは素晴らしいです。
基本的にinline-table
は要素テーブル用です。ここで本当に必要なのはinline-block
であると思います。とにかくinline-table
を使用する必要がある場合は、この方法で試してください。
<div style="width:50%; display:inline-table;">A</div><!--
--><div style="width:50%; display:inline-table;">B</div>
申し訳ありませんが、ここで私が見るすべての答えは、ハックするか、少しくしゃみをすると失敗します。
テーブルを使用する場合は、(必要に応じて)div間にスペースを追加し、境界線、パディングを設定できます...
<table width="100%" cellspacing="0">
<tr>
<td style="width:50%;">A</td>
<td style="width:50%;">B</td>
</tr>
</table>
ここでより完全な例を確認してください: http://jsfiddle.net/qPduw/5/