display: inline
inlineの場合、内容物のpaddingは効くが、上下方向のmarginは無効、更に最大の特徴として「width/heightの指定が無効」となる。
display: block
縦に並ぶ要素。blockの場合、内容物がブロック化される。divタグやpタグ、h1~h6の見出しタグなど。
- 幅と高さを指定できる
- 余白(padding,margin)も上下左右に指定できる
- 要素自体にtext-alignやvertical-alignの指定はできない
display: inline-block
改行が入らず横に並ぶ要素。要素の並び方はinline的で、要素の中身はblock的な性質を持つ。ボタンを横並びする時に重宝する。
- 幅・高さの指定ができる
- 上下左右の余白の指定もできる
- text-alignとvertical-alignの指定もできる
- 自動的に横並びにする(inlineの特徴)
この方法はどんなにレガシーなブラウザ環境でも横並びで表示できるというメリットがある。
display: block/inline/inline-blockのwidth:autoの表示仕様
displayプロパティのinline/block/inline-blockのwidthを明示しない初期状態の表示仕様は以下の通り。
- inline:内容物のサイズに依存(※幅指定無効)
- block:親要素の幅いっぱいまで広がる
- inline-block:内容物のサイズに依存(※幅指定無効)
内容物の幅に%を指定した場合、親要素の幅を基準とした幅の設定となる。その親要素に幅指定をしていなかった場合、内容部のwidth自体が「内容物に依存して決定される状態」となってしまっているため、幅が設定されない。
.btns {
background: #e7e7e7;
text-align: center; /* 2つのボタンを中央寄せに配置 */
}
.btns__item {
/* 横並びするようにインラインブロック化(ブラウザ幅に余裕があるときは横並び、そうでない時は縦並び) */
display: inline-block;
width: 80%;
max-width: 300px;
margin: 10px;
border: 1px dashed #999;
}
.btn {
display: block; /* 親要素(.btns__item)の幅いっぱいまで広がる */
padding: 15px;
background: skyblue;
border-radius: 8px;
text-align: center;
text-decoration: none;
}