質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.07%

marginでもpaddingで指定しても結果が同じになる理由が知りたい。

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,100
退会済みユーザー

退会済みユーザー

【HTMLのbody内】

<div class="contents">
        <h3 class="section-title">タイトルが入る</h3>

        <div class="contents-item">
          <img src="https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/html/study/html.svg">
          <p>HTML&CSS</p>
        </div>
        <div class="contents-item">
          <img src="https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/html/study/php.svg">
          <p>PHP</p>
        </div>
        <div class="contents-item">
          <img src="https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/html/study/ruby.svg">
          <p>Ruby</p>
        </div>
        <div class="contents-item">
          <img src="https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/html/study/swift.svg">
          <p>Swift</p>
        </div>
</div>

【CSS】

.contents{
    margin-top:100px;
    padding: 100px 80px;

}
.section-title {
  border-bottom: 2px solid #dee7ec;
  font-size:28px;
  padding-bottom:15px;
  margin-bottom:50px;
}
.contents-item{
  float: left;
  margin-right: 20px;
  /* padding-right: 20px; */
}

上記のコードにおいて、2点質問があります。
① contents-item セレクターに、

 margin-right: 20px;


とやっても、

  padding-right: 20px;


とやっても、ブラウザ表示した際、写真の間隔がどちらも同じなのですが何故でしょうか?
私は、 marginは「外側の幅」、paddingは「内側の幅」と理解していますが、
結果が同じという事が理解できません。
そして、HTMLでは、写真のURLをボックスとして載せていますが、
仮に写真URLを何も入れないで、単純にCSSの方で background-color でそれぞれ色付けした際、今度は margin では反映されるのに、padding の方では反映されなかったのですが、それは何故ですか?写真だから両方同じ結果と言う事でしょうか??

② padding 、 margin両方とも、ブラウザ表示した際、ブラウザ(chrome)の画面の幅を縮小すると、写真がズレてしまうのですが、この対策は何でしょうか?
Progateでのプレビューは縮小しても変わらないのですが...。

※追記※ ②の画面縮小した際のスクショを追加。
イメージ説明
↑こんな感じでオレンジ色の画像ファイルが下に行ってしまう。
もちろん画面を最大にしていれば、
イメージ説明
↑このようにちゃんと左詰めで表示されますが。

もしこれが『そう言う仕様』で、何か別なプロパティを指定すれば解決するのかも知れませんが、
何故こう思ったかと言うと、Progateで同じコードでプレビューした時は、画面縮小しても、「画像がズレない」からです。
Progateのスクショ↓
イメージ説明
↑このように、画面を右から左へ縮小した際、オレンジの画像が下にズレないのです。
特別な固定するプロパティは見られません。
ちなみにその時の contents-item のCSS内での指定は、

.contents-item {
  float: left;
  margin-right:40px;
  /*padding-right:40px;*/
  /* margin-rightを40pxにしてください */
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • cerfweb

    2019/02/06 21:37

    ②については、写真がずれた状態のスクリーンショットを見せていただけますか。

    キャンセル

  • cerfweb

    2019/02/06 21:43

    ①の「仮に写真URLを何も入れないで、単純にCSSの方で background-color でそれぞれ色付けした・・・」の件ですが、どの要素に指定されましたか。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2019/02/08 00:41

    スクショは追記にて致しました。

    キャンセル

回答 2

+1

まず①については、例えばcssの.contents-itemに

border: 1px solid #000;


と追加して比較してみるとお分かりになるかと思います。

②については、2段、3段になるということをおっしゃっているのでしたら、.contents-itemをまとめる親要素を追加してそれにflexを指定し、さらに、中の要素が等幅になるようなスタイルをcssで指定するのがいいと思います。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

① contents-item セレクターに、~略~ 写真の間隔がどちらも同じなのですが何故でしょうか?
私は、 marginは「外側の幅」、paddingは「内側の幅」と理解していますが、結果が同じという事が理解できません。

各領域の理解が少し違うと思います。
「写真」の部分は「コンテンツ部分」となり、その外側に、padding部分、(ボーダー部分)、margin部分があるので、padding・marginともに同幅であれば、同じ結果になります。


仮に写真URLを何も入れないで、~略~ 写真だから両方同じ結果と言う事でしょうか??

上記と同じ領域の問題ですが、background-colorは、padding部分にも色を付けます。その違いです。「写真」のある現状のコードに設定して見てください。テキスト部分の背景に色が付くはずです。


② padding、margin両方とも、~略~ Progateでのプレビューは縮小しても変わらないのですが...。

ブラウザを縮小表示でズレるのは、float設定による「カラム落ち」と言われる症状です。設定幅より狭くなるとズレて行きます。検索していろいろなサイトで理解して見てください。

Progateでのプレビューは良く知りませんが、イメージ図で表示されているだけではないのでしょうか?
(追記)または、どこかで表示分のwidth設定がされているのだと思います。


CSS 基本ボックスモデルの紹介

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.07%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る