# ボックスモデル

HTMLのタグは、ページ上で**ボックス**という領域を生成します。

この**ボックス**には大きく分けて、**ブロックボックス**と、**インラインボックス**の二種類が存在します。

タグによって、どちらのボックスを生成するかは決まっています。

## ブロックボックス

**ブロックボックス**は内容に関係なく、**ウィンドウの横幅いっぱい**に広がり、

要素の前後で改行され、基本的に**上から下**に配置されていきます。

特徴として、**width**(幅)と**height**(高さ)、上下左右の**margin**と**padding**(余白)を変更できます。

**width**や、**height**、**margin**や**padding**に関しては、次章にて説明します。

ブロックボックスは、hタグやpタグ、divタグ、ulタグ、olタグ等が該当します。

以下のようなhtmlとcssを記述した場合、

```html
    <div class="block1">block1</div>
    <div class="block2">block2</div>
    <div class="block3">block3</div>
```

```css
.block1 {
  background-color: green;
}

.block2 {
  background-color: red;
}

.block3 {
  background-color: blue;
}

```

以下のように、要素が横幅いっぱいに広がり、

記載した順に、上から下に配置されることがわかります。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2FvUUTyoSbVDm4Wssa2ofy%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-11-23%2016.04.31.png?alt=media&#x26;token=c111025b-cf55-4514-b080-3f437dade31f" alt=""><figcaption></figcaption></figure>

## インラインボックス

一方**インラインボックス**は、**内容分の幅と高さのみ**で、要素の前後で改行されず、**左から右**に配置されていきます。

特徴として、widthを指定できず、marginは左右の指定ができません。

インラインボックスはaタグやimgタグ、spanタグ、strongタグ等が該当します。

以下のようなhtmlとcssを記述した場合、

```html
<p>
    ブロックボックス
    <span class="inline1"> inline1 </span>
    <span class="inline2"> inline2 </span>
    <span class="inline3"> inline3 </span>
</p>
```

```css
.inline1 {
  background-color: green;
}

.inline2 {
  background-color: red;
}

.inline3 {
  background-color: blue;
}
```

以下のように、記載した順に、左から右に配置されることがわかります。

<figure><img src="https://1869761657-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcUBbYqol4PMzZJggiMqV%2Fuploads%2FnZ9wNcKipQinUsnR94G9%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-11-23%2016.23.38.png?alt=media&#x26;token=072f475b-a884-499b-bb33-6eb5f4a16cf3" alt=""><figcaption></figcaption></figure>
