ZeroPlus Gateについて

\ シェア /

FacBook
Twitter
LINE
はてブ
PPocket
ZeroPlus Media > Web制作 > HTML/CSS > 【CSS】marginとpaddingの違いを初心者向けに丁寧に解説

【CSS】marginとpaddingの違いを初心者向けに丁寧に解説

HTML/CSS

2022/08/05

2024/11/18

padding と margin使い分け

HTML /CSSの初心者にとって、最初の壁になりやすいのが「marginとpaddingの違い」です。

いずれも「余白」を作るCSSプロパティのため、両者の使い分けに悩みますよね。しかし、marginやpaddingは使用頻度の高いプロパティのため、十分に理解せずにCSSの学習を先に進めると、後で挫折につながりかねません。

本記事では、主に「marginとpaddingの違い」について初心者向けに丁寧に解説します。この記事を読めば、marginやpaddingの違いをしっかり理解しつつ、正しくコーディングできるようになるため、ぜひ参考にしてみてくださいね!

この記事で身につく内容
  • marginとpaddingの違いを理解できる
  • marginとpaddingの使い方をマスターできる

    なお本記事の内容を理解するためには、CSSの基本的な書き方について押さえている必要があります。もし自信がない場合には先に以下の記事で学びましょう。
    CSSの基礎と書き方を学ぼう

    ZeroPlus Gateについて

    プログラミング学習でこのような経験はありませんか?

    1. 目標に向けて何を学べば良いかわからない
    2. 調べても解決策が見つからない
    3. 現場レベルのスキルが身につくのか不安

    これらの悩みは、学習環境を整えることで全て解決することができます。

    ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

    1. なんでも相談できる専属メンター
    2. いつでも技術相談ができるプロ講師
    3. 元IT企業CTO監修のカリキュラム

    条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
    ただし、無料サービスの提供には参加者の数に制限があります。

    少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

    今すぐZeroPlus Gateの詳細を見る

    marginとpaddingはいずれも「要素の余白」を調整するCSSプロパティ

    marginとpaddingは、いずれも要素の余白を調整するCSSプロパティです。

    画像左の余白調整前の状態では、要素と要素が隙間なく敷き詰められています。一方、画像右のようにmarginやpaddingを指定すれば、要素に余白を作れます。

    かめるん先生
    かめるん先生
    余白のないレイアウトは、圧迫感が強まったり情報が理解しづらかったりするものです。そこでmarginやpaddingを活用しながらレイアウトにゆとりを与え、情報を整理していくことが求められます。ただしmarginとpaddingでは余白を生み出す領域が異なるため、正しく使い分けることが大切です。

     

    用語解説:要素

    要素とはHTMLの開始タグと終了タグで囲われたまとまりを指します。下に用意したサンプルのレイアウトは、h1要素、img要素、p要素と3つの要素から構成されています。

    60種類の動画で、HTML/CSSを学べる無料のスクール

    ZeroPlus Gateの詳細を見る

    費用は一切かからないサービスです

     

    marginは要素の外側の余白、paddingは要素の内側の余白

    marginとpaddingの違いは以下のとおりです。

    • margin:要素の外側の余白
    • padding:要素の内側の余白

    ただ要素の外側、内側という表現ではやや曖昧です。実はこの点がmarginとpaddingの正確な理解を難しくしているポイントです。marginとpaddingを正確に理解するうえでは、ボックスモデルという概念の理解が必要になります。

     

    marginとpaddingの正確な理解にはボックスモデルの理解が必要

    ボックスモデルとは「HTMLにおける全ての要素は、四角い箱の中に収められている」という考え方です。HTMLの要素は4つの領域を持っています。

    • 表示領域
    • 要素の内側の余白(padding)
    • 要素の外側の余白(margin)
    • paddingとmarginの境界線(border)

          これをボックスモデルで表すと以下のように表現できます。

          このようにmarginとpaddingの間には、borderという境界線があります。先ほどmarginとpaddingの違いを「要素の外側か内側かの違い」と表現しましたが、これはあいまいな表現のため、ボックスモデルを踏まえて以下のように言い換えてみます。

          • margin:borderの外側の余白
          • padding:borderの内側の余白

          厳密に表現するならば、上記のようになります。

          かめるん先生
          かめるん先生
          ちなみにmargin, border, paddingを指定しないデフォルトの状態では、いずれの値も「0」に指定されています。

          そのためCSSを学び始めたばかりであれば、表示領域の外側に3つの領域(padding, border, margin)があることはあまり意識してこなかったかもしれません。これを機に「ボックスモデルを意識したコーディング」に取り組んでみてくださいね。

            ボックスモデルについてさらに理解を深めるために、サンプルコードを用いて解説します。

            div要素(クラス名:container)の中に、h1要素(クラス名:title)が一つ含まれたシンプルなレイアウトを用意しました。h1要素に、margin, padding, borderをそれぞれ指定します。

            See the Pen Untitled by ZeroPlus (@zeroplus-programming) on CodePen.

            上のレイアウトをボックスモデルに当てはめると、以下のようになります。

            かめるん先生
            かめるん先生
            このようにボックスモデルを意識しながらpadding, margin, borderを指定していくと、レイアウト調整がスムーズにできます!

             

            marginとpaddingの使い分け方

            ボックスモデルについて理解できたところで、marginとpaddingの使い分け方を解説します。h1と画像のみのレイアウトを用意しました。

            使い分け方が理解できるようにmarginとpaddingを別々に指定してみます。

             

            marginを使うケース

            まずh1にmarginを指定してみましょう。

            このように「borderの外側に余白を作りたいとき」にはmarginを使います。

             

            paddingを使うケース

            次にh1に、marginの代わりにpaddingを指定してみましょう。


            このように「borderと表示領域(ここではTITLEというテキスト)の間に余白を入れたいとき」にはpaddingを使います。

            またpaddingの広がりとともに背景色も一緒に広がっている点にも着目しましょう。先に紹介したmarginを広げても背景色は広がりません。

             

            marginとpaddingの使い分け方のまとめ

            marginとpaddingの使い分け方について以下にまとめます。

            • marginはborderの外側に余白を作りたいときに使用する
            • paddingはborderと表示領域の間に余白を作りたいときに使用する
            • paddingには背景色が付くが、marginには背景色がつかない
            かめるん先生
            かめるん先生
            borderを含まないレイアウトではpaddingとmarginの境界線が視認できないため少し難しくなるものの、考え方に変わりはありません。ボックスモデルを意識しながら、marginとpaddingを使い分けていきましょう。

            赤い点線のところに「見えないborder」が存在しています。

            30日間でHTML/CSSが身に付く無料プログラミングスクール

            ZeroPlus Gateの詳細を見る

            費用は一切かかりません

             

            marginとpaddingの記述方法

            marginとpaddingの使い分け方を踏まえたうえで、記述方法についても紹介します。marginとpaddingの記述方法はほぼ同じですので、両者を並行して解説します。

             

            要素の四方に同じサイズの余白を作る方法

            要素の四方に同じサイズの余白を作成するのはかんたんです。marginまたはpaddingに対し、余白を取りたい分だけpx単位で値を1つ指定するのみです。下のサンプルコードをご覧ください。

            <div class="container">    
              <h1 class="title">TITLE</h1> 
            </div>
            .container {
                width: 600px;
            }
            
            .title{
                font-size: 24px;
                text-align: center;     
                font-weight: bold; 
                border: 10px solid #363148;
                padding: 20px;
                margin: 20px;
            }
            

             

            四方に異なるサイズの余白を作る方法

            四方に別のサイズの余白を作る際には、以下のプロパティを使います。

            marginに関するプロパティ指定内容paddingに関するプロパティ指定内容
            margin-top上方向のmarginを指定padding-top上方向のpaddingを指定
            margin-right右方向のmarginを指定padding-right右方向のpaddingを指定
            margin-bottom下方向のmarginを指定padding-bottom下方向のpaddingを指定
            margin-left左方向のmarginを指定padding-left左方向のpaddingを指定

            これを図に表すと以下のようになります。

            左方向かつ内側に余白を作りたいならばpadding-left、下方向かつ外側に余白を作りたい場合はmargin-bottomといった具合に、それぞれの方向に対応したプロパティを使用します。例として以下のように書いてみます。

            .title{
                font-size: 24px;
                text-align: center;
                font-weight: bold;
                border:10px solid #363148;
                padding-left: 5px;
                padding-right: 10px;
                padding-top: 15px;
                padding-bottom: 20px;
                margin-left: 20px;
                margin-right: 15px;
                margin-top: 10px;
                margin-bottom: 5px;
            }

            このように四方の余白を異なるサイズで指定できます。

            しかしこの方法では、余白を指定する箇所が増えると、記述するコードが増えてしまいますよね。そこでmarginやpaddingをより短くスッキリと記述する方法を紹介します。

            60種類の動画で、HTML/CSSを学べる無料のスクール

            ZeroPlus Gateの詳細を見る

            費用は一切かからないサービスです

             

            ショートハンドを使って記述する方法

            ショートハンドとは複数あるプロパティの指定を、一つのプロパティへまとめて書く手法です。marginやpaddingの指定をする際にもショートハンドを使用して、短縮したコードを書けます。

            marginとpaddingでショートハンドを使用する場合、以下の3つのパターンによって記述方法が異なります。

            • 上下と左右の値をセットで同じ値にする
            • 左右のみセットで同じ値にし、上下は異なる値にする
            • 四方の余白を異なる値に指定する

                それぞれについて紹介します。

                 

                1. 上下と左右の値をセットで同じ値にする

                上下と左右の余白をセットで同じサイズにしたい場合には、以下のように値を2つ指定します。

                .title{
                    font-size: 24px;
                    text-align: center;
                    font-weight: bold;
                    border:10px solid #363148;
                    padding: 20px 40px; /*上下 左右*/
                    margin: 20px 40px; /*上下 左右*/
                }

                 

                2. 左右のみセットで同じ値にし、上下は異なる値にする

                左右のみセットで同じサイズにし、上下は異なるサイズに余白を指定するならば、以下のように値を3つ記述します。

                .title{
                    font-size: 24px;
                    text-align: center;
                    font-weight: bold;
                    border:10px solid #363148;
                    padding: 20px 40px 10px; /*上 左右 下*/
                    margin: 20px 40px 10px; /*上 左右 下*/
                }

                 

                3. 四方の余白を異なる値に指定する

                四方の余白を異なるサイズに指定する場合には、以下のように値を上から時計回りに4つ記述します。

                .title{
                    font-size: 24px;
                    text-align: center;
                    font-weight: bold;
                    border:10px solid #363148;
                    padding: 20px 40px 10px 30px; /*上 右 下 左*/
                    margin: 20px 40px 10px 30px; /*上 右 下 左*/
                }

                このようにショートハンドを使用すれば、marginやpaddingの指定を短いコードで書けます。

                30日間でHTML/CSSが身に付く無料プログラミングスクール

                ZeroPlus Gateの詳細を見る

                費用は一切かかりません

                 

                %指定で余白を指定する方法

                ここまでの解説では、marginとpaddingの値をpxで指定していましたが「%を使って指定する方法」もあります。ただしmarginやpaddingを「%指定」する場合には「親要素と子要素」の概念を知っておく必要があります。

                HTMLを書くときにタグをタグで、はさんで書くことがありますよね。このとき挟んでいる方のタグを親要素、はさまれている方のタグを子要素と呼びます。下記のコードをご覧ください。

                <div class="container"> <!--親要素-->
                    <h1 class="title">TITLE</h1> <!--子要素-->
                </div>

                この場合、h1をはさんでいるdivが親要素、divにはさまれているh1が子要素にあたります。ここで%指定の話に戻りましょう。下のように%指定を使用すると、親要素の横幅に対する割合で余白のサイズが算出されます。

                これをコードで表すと下記のようになります。

                .container{
                    width: 1000px;
                }
                
                .title{
                    font-size: 24px;
                    text-align: center;
                    font-weight: bold;
                    background-color: #ff914d;
                    padding-right:15%;
                    margin-right:15%;
                    padding-left:15%;
                    margin-left:15%;
                    width: 40%;
                }

                このときwidth、margin、paddingの合計が100%になるように指定しましょう。100%を超えると子要素が親要素をはみ出てしまうためです。

                余白の%指定はレスポンシブ指定に適している

                margin、paddingの%指定はレスポンシブ対応が必要なWebサイトを制作する際に活躍します。レスポンシブ対応とはパソコン・スマホ・タブレットなど、画面サイズの異なるデバイスでWebサイトを閲覧しても、最適なレイアウトで表示させる技術のことです。

                marginやpaddingをpx指定する場合、パソコンでは適しているように見えた余白幅が、スマホで閲覧してみると大きすぎると感じる場合があります。一方、%指定を使用すれば、親要素の幅に応じて割合で余白が変化します。パソコンで閲覧してもスマホで閲覧しても、画面幅に応じて適当な余白を取るように調整されるわけです。

                かめるん先生
                かめるん先生
                注意点として、親要素のwidthがpx指定されている状態ではmarginやpaddingを%指定しても、表示する端末の画面幅によって余白の幅が変わることはありません。画面幅が変わっても親要素の幅が固定されるためです。画面幅に応じてmarginやpaddingの幅が変化するようにしておくためには、親要素のwidthも%指定にしておく必要があります。

                 

                borderを含むレイアウトで%指定を使用するケース

                borderを含むレイアウトで、marginやpaddingを%指定する方法についても解説します。

                borderは太さの%指定ができません。そのためborderを含むレイアウトでは、borderの太さの分だけ、子要素が親要素の外へはみ出してしまう問題が発生します。

                このようにmargin, padding, widthの合計が100%になるように指定しても、borderの幅の分だけ親要素の外へはみ出してしまいます。はみだしを防ぐためには、box-sizing; border-box;を要素に指定します。

                box-sizingとは要素の幅・高さに、paddingとborderを含めるかどうかを指定するプロパティです。値にborder-boxを指定することで、paddingとborderは要素のwidthとheightに含まれるようになります。これによりborderを含むレイアウトであっても、親要素からの子要素のはみ出しを防げます。

                ただしこの方法では、以下のようにpaddingやborderの幅が広がるほど、表示領域の幅は狭まる点に注意が必要です。

                 

                box-sizing: border-box;は全称セレクタで指定する

                box-sizing: border-box;は、下記のように全称セレクタを使って、全ての要素に一括で効かせる手法が一般的です。

                *{
                   box-sizing: border-box;
                }

                このように*(アスタリスク)をセレクタにすると、全要素へ同じ指定を適用させられます

                参考記事

                【CSS】box-sizingにborder-boxを指定すると何が変化するかを分かりやすく解説

                 

                まとめ:marginはborderの外側、paddingはborderの内側に余白を作るプロパティ

                この記事ではmarginとpaddingの違いや使い分け方について解説しました。marginとpaddingはいずれも「余白」を作る性質を持つプロパティだけに、違いを理解するのが難しい面があります。

                ボックスモデル

                marginとpaddingの違いを正確に捉えるためには、ボックスモデルの理解が欠かせません。

                これを踏まえると、marginとpaddingは以下のように表せます。

                • margin:borderの外側に余白を作りたいときに使用する。
                • padding:borderの内側に余白を作りたい時に使用する。

                このようにmarginとpaddingを正しく理解するためには、borderが境界になっている点を意識する必要があります。

                margin,paddingのショートハンド

                実際にmarginやpaddingをコーディングする際には、ショートハンドを使うと短いコードで効率的に記述できます。

                ①上下と左右の余白をセットで同じサイズにしたい場合

                padding: 値1(上下) 値2(左右); margin: 値1(上下) 値2(左右);

                ②左右のみセットで同じサイズにし、上下は異なるサイズに余白を指定する場合

                padding: 値1(上) 値2(左右) 値3(下); margin: 値1(上) 値2(左右) 値3(下);

                ③四方の余白を異なるサイズに指定する場合

                padding: 値1(上) 値2(右) 値3(下) 値4(左); margin: 値1(上) 値2(右) 値3(下) 値4(左);

                このように、ショートハンドをうまく使ってコーディングを進めてみましょう。ZeroPlus Mediaはあなたの学習を応援しています。

                ZeroPlus Gateについて

                プログラミング学習でこのような経験はありませんか?

                1. 目標に向けて何を学べば良いかわからない
                2. 調べても解決策が見つからない
                3. 現場レベルのスキルが身につくのか不安

                これらの悩みは、学習環境を整えることで全て解決することができます。

                ZeroPlus Gateでは、30日間無料で最適な学習環境を提供しています。

                1. なんでも相談できる専属メンター
                2. いつでも技術相談ができるプロ講師
                3. 元IT企業CTO監修のカリキュラム

                条件なしでこのレベルの環境を無料で提供しているのはZeroPlus Gateだけです。
                ただし、無料サービスの提供には参加者の数に制限があります。

                少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。

                今すぐZeroPlus Gateの詳細を見る

                \ 学んだことをSNSでシェアしよう /

                おすすめのタグ

                この記事の監修者

                かめるん

                ZeroPlus講師

                【日本一生徒さんが大好きな講師】 プログラミングスクール『ZeroPlus』講師 / 3年間のエンジニアを経て独立2年目 / 話しやすい講師ランキング1位(生徒さん調べ) / 「もう少し頑張ってみようかな」の背中を押す人 / 思わず学習したくなるポジティブを発信 /

                この記事の執筆者

                ZeroPlus Media変種部

                ZeroPlus Media編集部

                ZeroPlusは、「フリーランス特化型プログラミングスクール」です。ZeroPlus Mediaでは、フリーランスとして活躍する際に役立つ有益なプログラミングやWeb制作に関する情報を発信しています。

                質問について

                ZeroPlus Media読者限定で質問対応をおこなっています。以下の2つの方法で質問を受け付けています。

                選べる2つの質問方法

                1

                Google Foam(テキスト)で質問

                mail

                フォーム送信

                メールで解答

                formで質問
                2

                Google meet(オンラインmtg)で質問

                meet

                日時選択

                メールを受け取る

                メールからmtgに参加

                meetで質問
                ZeroPlus Gateについて

                あなたの目的に合わせた2つのサービス

                あなたの目的に合わせたZeroPlusの2つのサービス
                基礎からフリーランスレベルまで本質的な学びを提供しています

                完全無料!30日間で学びきれる
                プログラミンスクールZeroPlus Gate

                • お金をかけずに、学習を進めたい
                • Webサイトを作れるようになりたい
                • メンターや講師に質問しながら学習したい

                詳しくはこちらから

                フリーランス特化型
                プログラミングスクール ZeroPlus

                • プログラミング学習で悩んでいる
                • 仲間と一緒に学習したい
                • フリーランスとしての総合的な力を養いたい

                詳しくはこちらから