Contents
display:「block」と「inline-block」の違い
まずはblockとinline-blockの違いを見ていきましょう。
blockは要素が横幅いっぱいに表示されます。
一方、inline-blockはその要素の幅に応じて、要素が詰めて表示されます。
上図のように、要素Cは要素A,Bの行に入り切らないので、自動的に改行されて表示されます。
「block」の使い方とサンプル
HTML
<ul>
<li>
<div class="block">2019年8月8日</div>
<div class="block">タピオカミルクティ抹茶味の販売を開始しました</div>
</li>
<li>
<div class="block">2019年8月2日</div>
<div class="block">新宿2号店をオープンしました</div>
</li>
</ul>
CSS
.block {
display: block;
}
li {
border-bottom: 1px solid #dedede;
padding: 0 0 10px 0;
margin: 0 0 10px 0;
}
表示
divを使うと、改行<br>を使わなくとも、ブロック要素になり改行と同じ表示なります。
(注)divは初期値としてdisplayがblockを持っているので、cssでわざわざblockを指定しなくてもよいですが、ここではあえて書いています。
「inline-block」の使い方とサンプル
HTML
<ul>
<li>
<div class="inlineblock">2019年8月8日</div>
<div class="inlineblock tag">新商品</div>
<div class="inlineblock">タピオカミルクティ抹茶味の販売を開始しました</div>
</li>
<li>
<div class="inlineblock">2019年8月2日</div>
<div class="inlineblock tag">新商品</div>
<div class="inlineblock">新宿2号店をオープンしました</div>
</li>
</ul>
CSS
.inlineblock {
display: inline-block;
}
.tag {
background: #ff9800;
border-radius: 4px; color: #fff;
font-size: 90%;
padding: 2px 10px;
}
li {
border-bottom: 1px solid #dedede;
padding: 0 0 10px 0;
margin: 0 0 10px 0;
list-style-type: none;
}
表示
初期値でblockを持っているhtmlタグ
divのように初めからblock要素を持っているタグがあり、その場合はcssでdisplay: block;を指定する必要はありません。
このように、初期値でblockをとる要素は次のようなタグがあります。
- <p> 段落
- <address> 住所など
- <article>記事など
- <aside> 脚注、補足情報
- <blockquote> 引用
- <details> 折りたたみ要素
- <dialog> ダイアログボックス
- <dd> 定義リストの内容
- <div> 文章
- <dl> 定義リスト
- <dt> 定義リストの見出し
問題1
次の場合は、どのように表示されるでしょうか?
HTML
<div class="block">りんご</div>
<div class="block">みかん</div>
<div class="block">メロン</div>
CSS
.block {
display: block;
}
それぞれブロックなので、表示は次のように、一行ずつ表示されます。
表示
りんご
みかん
メロン
問題2
では次の場合は、どのように表示されるでしょうか?
HTML
<div class="inline-block">りんご</div>
<div class="inline-block">みかん</div>
<div class="inline-block">メロン</div>
CSS
.inline-block {
display: inline-block;
}
表示
各div要素はinline-blockなので、横並びに表示されます。
※ただし、スマートフォンなどの横幅が狭いスクリーンでは改行される場合もあります。
問題3
さらに次の場合は、どのように表示されるでしょうか?
HTML
<div class="block">りんご</div>
<div class="inline-block">みかん</div>
<div class="inline-block">メロン</div>
CSS
.block {
display: block;
}
.inline-block {
display: inline-block;
}
表示
りんごはblockなので横幅100%で表示されます。
みかんとメロンはともにinline-blockなので、右に詰めて表示されます。