更新: 2021 年なので、代わりにflexboxまたはそれ以上のCSS グリッド レイアウトinline-block
を使用してください。
要素を使用する場合、それらの要素間inline-block
には常に問題があります(そのスペースは約 4px 幅です)。whitespace
したがって、divs
両方とも幅が 50% の 2 つに加えて、whitespace
(~ 4px) は幅が 100% を超えているため、壊れます。問題の例:
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
これを修正するには、いくつかの方法があります。
1.それらの要素の間にスペースがない
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div><div class="right">bar</div>
2. HTML コメントの使用
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div><!--
--><div class="right">bar</div>
3. 親font-size
をに設定し、要素0
に値を追加しますinline-block
body{
margin: 0; /* removing the default body margin */
}
.parent{
font-size: 0; /* parent value */
}
.parent > div{
display: inline-block;
width: 50%;
font-size: 16px; /* some value */
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="parent">
<div class="left">foo</div>
<div class="right">bar</div>
</div>
4.それらの間に負のマージンを使用する(望ましくない)
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
margin-right: -4px; /* negative margin */
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div>
<div class="right">bar</div>
5. 落し込み角度
body{
margin: 0; /* removing the default body margin */
}
div{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<div class="left">foo</div
><div class="right">bar</div>
<hr>
<div class="left">foo</div><div class="right">
bar</div>
6.特定のHTML 終了タグをスキップする (参照用の @thirtydot に感謝します)
body{
margin: 0; /* removing the default body margin */
}
ul{
margin: 0; /* removing the default ul margin */
padding: 0; /* removing the default ul padding */
}
li{
display: inline-block;
width: 50%;
}
.left{
background-color: aqua;
}
.right{
background-color: gold;
}
<ul>
<li class="left">foo
<li class="right">bar
</ul>
参考文献:
- CSS トリックのインライン ブロック要素間のスペースとの戦い
- David Walshによるインラインブロック要素間の空白の削除
- インラインブロック要素間のスペースを削除するには?
@MarcosPérezGude が言ったように、最善の方法は を使用し、タグにrem
デフォルト値を追加することです( HTML5Boilerplateのように)。例:font-size
html
html{
font-size: 1em;
}
.ib-parent{ /* ib -> inline-block */
font-size: 0;
}
.ib-child{
display: inline-block;
font-size: 1rem;
}