marginとpaddingの使い分けまとめ（CSS編）

## 概要
普段自分が行っている。marginとpaddingの使い分けの方法をまとめます。
記事は「[HTML編](https://qiita.com/moyashi_san_tarou/items/850f20d63de181b56604)」と「CSS編」と「[演習編](https://qiita.com/moyashi_san_tarou/items/879738303935b74660ad)」の3つから構成しています。

## 今回作成したいデザイン
今回作成したいデザインは以下になります。
![image_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3753383/c82ac553-4c93-1927-208c-4b86ff90350d.png)


## HTML編までのindex.htmlの確認
HTML編で作成したHTMLは以下になります。
```index.html
<body>
  <div data-wrap="水色の大枠">
    <div data-wrap="タイトル">提供可能な各クレジットカードについて</div>
    <div data-wrap="概要">各クレジットカードによって提供されるサービスが異なります。以下のそれらをまとめました。</div>
    <div data-wrap="カードプランの大枠">
      <div data-wrap="茶色の枠">
        <div data-wrap="カード名">スタンダードカード</div>
        <div data-wrap="カード詳細">スタンダードカードは年会費無料でご利用いただけます。ご利用金額の0.5％がポイントとしてたまっていきます。</div>
      </div>
      <div data-wrap="茶色の枠">
        <div data-wrap="カード名">プレミアムカード</div>
        <div data-wrap="カード詳細">プレミアムカードは年会費10000円でご利用いただけます。ご利用金額の2.0％がポイントとしてたまっていきます。</div>
      </div>
    </div>
  </div>
</body>
```

## margin, padding設定前に他のプロパティを設定する
以下のようにindex.htmlにmarginとpadding以外に必要なプロパティを追加いたしました。
```
<body>
  <div data-wrap="水色の大枠" style="background-color: aquamarine;">
    <div data-wrap="タイトル">提供可能な各クレジットカードについて</div>
    <div data-wrap="概要">各クレジットカードによって提供されるサービスが異なります。以下のそれらをまとめました。</div>
    <div data-wrap="カードプランの大枠" style="display: flex;">
      <div data-wrap="茶色の枠" style="background-color: chocolate;">
        <div data-wrap="カード名">スタンダードカード</div>
        <div data-wrap="カード詳細">スタンダードカードは年会費無料でご利用いただけます。ご利用金額の0.5％がポイントとしてたまっていきます。</div>
      </div>
      <div data-wrap="茶色の枠" style="background-color: chocolate;">
        <div data-wrap="カード名">プレミアムカード</div>
        <div data-wrap="カード詳細">プレミアムカードは年会費10000円でご利用いただけます。ご利用金額の2.0％がポイントとしてたまっていきます。</div>
      </div>
    </div>
  </div>
</body>
```
上記のindex.htmlを画面で確認すると以下のようになります。
![image_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3753383/8f483648-8e25-6901-7ad9-a7d3a88dd11f.png)

## 枠を元に余白を設定する
### paddingの設定
#### paddingを取る例
画像のピンク部分の余白を取りたいとします。
![image_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3753383/0c8c5aa6-d7ab-45f6-d067-64d21e9706ea.png)

今回は"水色の大枠"と"タイトル"の間に余白を付けます。
このときに"水色の大枠"と"タイトル"に注目すると、"水色の大枠"の中に"タイトル"の枠があります。
このようなときは外側の枠（親要素）である"水色の大枠"にpaddingを使用して余白を付けます。
`<div data-wrap="水色の大枠" style="background-color: aquamarine;">`
↓
`<div data-wrap="水色の大枠" style="background-color: aquamarine; padding: 20px 0 0 0;">`

上記の変更を行ったindex.htmlを画面で確認すると以下になります。(水色の大枠とタイトルの間に余白ができます)
![image_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3753383/6cf7e99e-ec3d-10d6-5c53-8420d750b95e.png)

#### paddigのまとめ
余白を付けたい対象の2つの枠を見たときに、片方の枠の中にもう片方の枠が入っている状態（親子関係）ならば、外側の枠（親要素）にpaddingを使用して余白を付けます。

### marginの設定
#### marginを取る例
画像のピンク部分の余白を取りたいとします。
![image_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3753383/550642d5-fade-ec59-a349-b6670671e7c9.png)

今回は"タイトル"と"概要"の間に余白を付けます。
このときに"タイトル"と"概要"に注目すると、どちらの枠ももう片方の枠の外にあります。（paddingのときと違って片方の枠の中にもう片方の枠が入っている状態ではない）
このようなときはmarginを使用して余白を付けます。
※marginはどちらで使用しても良いのですが、トルツメを意識して下側にある要素に対してmarginを使用することが多いです。そのため今回は下側にある"概要"にてmarginを使用して余白を取ります。
`<div data-wrap="概要">各クレジットカードによって提供されるサービスが異なります。以下のそれらをまとめました。</div>`
↓
`<div data-wrap="概要" style="margin: 52px 0 0 0;">各クレジットカードによって提供されるサービスが異なります。以下のそれらをまとめました。</div>`

上記の変更を行ったindex.htmlを画面で確認すると以下になります。(水色の大枠とタイトルの間に余白ができます)
![image_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3753383/68d8d77e-6c59-1fc6-1262-7dcd37d3fcdf.png)

#### marginのまとめ
余白を付けたい対象の2つの枠を見たときに、どちらの枠ももう片方の枠の外にある状態（兄弟関係）ならば、marginを使用して余白を付けます。

#### marginの備考
こちらの記事ではmarginのトルツメが行いやすいように垂直方向のmarginはmargin-topで, 並行方向のmarginはmargin-leftで取るようにしています。
また次の記事でも同様に進めてまいります。