ブロックレベル要素とインラインレベル要素

ブロックレベル要素とインラインレベル要素

ブロックレベル要素の特徴

  • テキストP.076〜P.077
  • 要素が縦に並ぶ(その前後で改行表示されます)
  • 幅と高さを指定できる(デフォルト状態で親要素と同じ幅を持っています)
  • 余白を自由に調整できる
  • 要素の配置を指定できない
  • 親要素より小さい幅を指定しても前後で改行され、横並びに配置できません
  • 幅指定がない場合は、ブラウザー幅で表示されます
  • 見出し(h1〜h6要素)、段落(p要素)、表(table要素)、リスト(ul、ol、dl要素)などが該当します
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ブロックレベル要素</title>
<style>
h1 {
  background-color: #BAD6EF;
}
p {
  background-color: #EDF5AC;
}
</style>
</head>
<body>
<h1>見出し</h1>
<p>段落</p>
</body>
</html>


インラインレベル要素の特徴

  • 主にブロックレベル要素の中で使用される要素
  • 横に要素が並ぶ(前後で改行されません)
  • 幅と高さは指定できない
  • 上下の余白が調整できない(上下のpaddingは指定できるが非推奨)
  • 要素の配置を指定できる
  • リンク(a要素)、画像(img要素)、汎用要素:特別な意味を持たない(span要素)など

インラインブロック要素の特徴

  • ブロックレベル要素とインライン要素の中間の要素
  • 横に要素が並ぶ
  • 幅と高さが指定できる
  • 余白を自由に調整できる
  • 要素の配置を指定できる
block、inline、inline-blockの違い

blockinlineinline-block
並び方縦並び横並び横並び
幅・高さの指定
余白の指定左右ののみ○
paddingは上下も可
配置の指定
(親要素に指定)

(親要素に指定)

displayプロパティ

  • ブロックレベル要素をインラインレベル要素のように扱う
  • インラインレベル要素をブロックレベル要素のように扱う
ブロックレベル要素をインラインレベル要素のように扱う
  • リストを横に並べる
li {
  display: inline;
}
インラインレベル要素をブロックレベル要素のように扱う
  • a要素をブロックレベル要素として表示し、クリック可能な領域を広げる
a {
  padding: 10px;
  display: block;
}
便利な値(display: inline-block;)
  • インラインレベル要素のように前後で改行せずに配置しつつ、ブロックレベル要素のように高さと上下マージン・上下パディングを指定できます
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>display:inline-block</title>
<style>
ul {
  width: 300px;
  padding: 0;
  background-color: #D2F4FE;
}
li {
  display: inline-block;
  width: 100px;
  height: 50px; /* 高さ 50px */
  margin-bottom: 10px; /* 下マージン 10px */
  background-color: #DFB9E5;
}
</style>
</head>
<body>
<ul>
  <li>リスト項目1</li>
  <li>リスト項目2</li>
  <li>リスト項目3</li>
</ul>
</body>
</html>
  • インラインレベル要素と同様に、ソースコード上の改行やインデントは空白1文字分に置き換わります

<body>
<ul>
  <li>リスト項目1</li><li>リスト項目2</li><li>リスト項目3</li>
</ul>
</body>
  • 改行をとると、空きがなくなりすべて横並びになります

リセット

  • ブラウザーが適用しているCSSの値を0または none にする
  • HTMLで入力した要素のみをリセットします
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>リセットCSSを記述する前に</title>
<style>
h1,p,ul {
  color: #FFF;
}
h1 {
  background-color: #95CCE2;
}
p {
  background-color: #EFB15F;
}
li {
  background-color: #98DC77;
}
</style>
</head>
<body>
<h1>ページのテーマ</h1>
<p>ここに本文が入る</p>
<ul>
<li>箇条書き</li>
<li>箇条書き</li>
<li>箇条書き</li>
</ul>
</body>
</html>



  • 各要素間が、指定していないにもかかわらず空いているのがわかります
  • リストも2文字分インデントされています

これは、ブラウザが初期値としてもっている空きの値を利用してプレビューしているからです

ブラウザ固有のCSSの値をリセット

《空きをなくす記述》

h1, p, ul, li {
  color: #FFF;
  margin: 0;
  padding: 0;
}

この状態から、自分の空けたい値を指定することにより、思い通りのレイアウトにするということが「リセットCSS」の目的です。

《ブラウザとの空きもなくす記述》

html, body, h1, p, ul, li {
  color: #FFF;
  margin: 0;
  padding: 0;
}

これからページを構築していく段階で、「初期値:0」であることにより、指定した値が反映されていることが確認しやすくなります。


この設定の意味を拡張(値を初期値に設定し直す)した設定を「リセットCSS」と呼びます。