はじめに
「diaplay inline-block+幅を%指定」で均等横並びをする際、
最後の要素だけ改行されてしまい困った経験をしたので、自分への備忘録も兼ねて、
だれかの参考になればと思い書かせていただきます。
概要
まずは、問題の状況を確認します。
<div class="content1">content1</div>
<div class="content2">content2</div>
div{
display: inline-block;
width: 50%;
}
.content1{
background: blue;
}
.content2{
background: red;
}
上記のコードをブラウザで開くと、下記の画像のように縦並びになってしまいます。
ちなみに、divタグをwidth: 49%;にすると、下記画像のように横並びになりますが、隙間が空いてしまいます。
幅いっぱいに要素を並べるにはどうすればよいのでしょうか。
解決法
原因は、ソースコード上でdivタグを改行して記述していたからでした。
<div class="content1">content1</div>
<div class="content2">content2</div> /* ここを改行しているのが原因 */
下記のようにdivタグを改行せずに記述し、ブラウザで確認してみると、
<div class="content1">content1</div><div class="content2">content2</div>
ちゃんと幅いっぱいに均等横並びができました。
なぜソースコード上の改行が原因なのか
html上の改行は、半角スペース一つ分として認識されてしまうからです。
それぞれのdivタブはちゃんと50%ずつの幅になっていますが、2つのdivタブの間に半角スペースが入ってしまい、画面全体の幅を超えてしまったため、最後の要素が改行されてしまうというのが、今回の問題の正体でした。
意外とめっちゃ基本的なことが原因でした。。
まだまだ勉強が足りないことを実感した経験でした。
おまけ①
ソースコード上で改行せずに記述すると、問題は解決できましたが、可読性悪いですよね。
<div class="content1">content1</div><div class="content2">content2</div>
可読性を良く、半角スペースが入らない解決方法をまとめてみます。
方法1 divタグの終了タグを改行する
<div class="content1">content1</div
><div class="content2">content2</div>
方法2 コメントを利用する
<div class="content1">content1</div><!--
--><div class="content2">content2</div>
少しは読みやすくなったのではないでしょうか。
おまけ②
今回は、2個の要素の均等横並びを前提にお話ししましたが、要素の個数が増える場合は、次のように幅指定してあげると、均等横並びができるようです。
| 要素の個数 | width |
|---|---|
| 2個 | 50% |
| 3個 | 33.3333% |
| 4個 | 25% |
| 5個 | 20% |
| 6個 | 16.6667% |
| 7個 | 14.2857% |
| 8個 | 12.5% |
| 9個 | 11.1111% |
| 10個 | 10% |
| 11個 | 9.0909% |
| 12個 | 8.3333% |


