๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

html, css

๋งˆ์ง„ ๊ฒน์นจ ํ˜„์ƒ(margin collapsing)

 

์ฐธ๊ณ 

https://developer.mozilla.org/ko/docs/Web/CSS/CSS_box_model/Mastering_margin_collapsing

https://youtu.be/c19Mjg-ivxc?si=kzFGncB5IBQzRxKi

https://velog.io/@devsaza/likealion006

https://velog.io/@ursr0706/%EB%A7%88%EC%A7%84margin

 

 

๋งˆ์ง„ ๊ฒน์นจ ํ˜„์ƒ(๋งˆ์ง„ ์ƒ์‡„ ํ˜„์ƒ)

 

์—ฌ๋Ÿฌ ๋ธ”๋ก์˜ margin ์ƒํ•˜ ๊ฐ’์ด ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ œ์ผ ํฐ margin ๊ฐ’์„ ๊ฐ€์ง„ ๋‹จ์ผ margin์œผ๋กœ ๊ฒฐํ•ฉ(์ƒ์‡„)๋˜๋Š” ํ˜„์ƒ (๋‹จ, float ์†์„ฑ๊ฐ’์„ ์คฌ๊ฑฐ๋‚˜ position ์†์„ฑ ๊ฐ’์ด ์ ˆ๋Œ€์š”์†Œ(absolute, fixed, sticky...)

์ฆ‰ ์ธ์ ‘ํ•œ ์š”์†Œ ๊ฐ„์˜ ์œ„์•„๋ž˜ margin์ด ๊ฒน์น  ๋•Œ, ํฐ ์ชฝ์˜ ๊ฐ’๋งŒ ์ ์šฉํ•˜๋Š” ํ˜„์ƒ์ด๋‹ค.

 

๋งˆ์ง„ ์ƒ์‡„๋Š” ๋‹ค์Œ ์ƒํ™ฉ์—์„œ ๋ฐœ์ƒํ•œ๋‹ค.

 

1. ์ธ์ ‘ ํ˜•์ œ ์š”์†Œ๊ฐ„ ๋ฐ”๊นฅ ์—ฌ๋ฐฑ

 

html, css ์ฝ”๋“œ

๋”๋ณด๊ธฐ

html

<div class="m-c-container">
  <div class="item">
    <h3>์ธ์ ‘ ํ˜•์ œ ์š”์†Œ</h3>
    <p>
      ๋ฐ•์Šค๋“ค์—๊ฒŒ margin : 30px์˜ ์†์„ฑ์„ ์คฌ์œผ๋‚˜, ๋ฐ•์Šค1์˜ margin-bottom :
      30px์™€ ๋ฐ•์Šค2์˜ margin-top : 30px์ด ๊ฒน์ณ ๋‘ ๋ฐ•์Šค ๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด 60px๊ฐ€
      ์•„๋‹Œ 30px๋กœ ๊ฒน์นจํ˜„์ƒ์ด ์ผ์–ด๋‚จ.
    </p>
    <div class="parent">
      <div class="child">๋ฐ•์Šค1</div>
      <div class="child">๋ฐ•์Šค2</div>
    </div>
  </div>
  <div class="item">
    <h3>ํ•ด๊ฒฐ๋ฐฉ์•ˆ</h3>
    <p>ํ˜•์ œ ์š”์†Œ๋“ค์—๊ฒŒ display : inline-block ์†์„ฑ์„ ์ค€๋‹ค.</p>
    <div class="parent">
      <div class="child brother-box">๋ฐ•์Šค1</div>
      <div class="child brother-box">๋ฐ•์Šค2</div>
    </div>
  </div>
</div>

 

css

  .m-c-container {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-evenly;
    border: 2px solid #333;
    padding: 20px;
    margin-bottom : 20px;
  }

  .item {
    width: 45%;
  }
  
/* ์ธ์ ‘ ํ˜•์ œ ์š”์†Œ */
  .parent {
    width: 200px;
    border: 1px solid black;
    background-color: #77b11a;
    margin: auto;
  }
  .child {
    border: 1px solid black;
    background-color: #3a5e00;
    color: white;
    padding: 20px;
    margin: 30px;
  }
  .brother-box {
    display: inline-block;
  }

  @media screen and (max-width: 767px) {
    .item {
      width: 100%;
    }
  }

 

margin-collapsing

์ธ์ ‘ ํ˜•์ œ ์š”์†Œ

๋ฐ•์Šค๋“ค์—๊ฒŒ margin : 30px์˜ ์†์„ฑ์„ ์คฌ์œผ๋‚˜, ๋ฐ•์Šค1์˜ margin-bottom : 30px์™€ ๋ฐ•์Šค2์˜ margin-top : 30px์ด ๊ฒน์ณ ๋‘ ๋ฐ•์Šค ๊ฐ„์˜ ๊ฐ„๊ฒฉ์ด 60px๊ฐ€ ์•„๋‹Œ 30px๋กœ ๊ฒน์นจํ˜„์ƒ์ด ์ผ์–ด๋‚จ.

๋ฐ•์Šค1
๋ฐ•์Šค2

ํ•ด๊ฒฐ๋ฐฉ์•ˆ

ํ˜•์ œ ์š”์†Œ๋“ค์—๊ฒŒ display : inline-block ์†์„ฑ์„ ์ค€๋‹ค.

๋ฐ•์Šค1
๋ฐ•์Šค2

 

 

 

2. ๋ถ€๋ชจ์™€ ์ž์†์„ ๋ถ„๋ฆฌํ•˜๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ์—†๊ฑฐ๋‚˜ ๋นˆ ๊ณต๊ฐ„์ž„

 

html, css ์ฝ”๋“œ

๋”๋ณด๊ธฐ

html (์ด๋ฒˆ์—” ๊ฐ ํ•ด๊ฒฐ๋ฐฉ์•ˆ๋งˆ๋‹ค ํƒœ๊ทธ์— ์ง์ ‘์ ์œผ๋กœ style ์†์„ฑ์„ ๋ถ€์—ฌํ–ˆ๋‹ค.)

    <div class="m-c-container">
      <div class="item">
        <h3>๋ถ€๋ชจ ์ž์‹ ์š”์†Œ</h3>
        <p>
          ์ž์‹์—๊ฒŒ margin : 30px์ด ์ฃผ์–ด์ ธ์žˆ์ง€๋งŒ, ๋ถ€๋ชจ ์š”์†Œ์˜ ๋†’์ด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋„˜์–ด์„œ๊ณ  ์žˆ๋‹ค. ์ฆ‰ ์ž์‹์˜ margin์€ ๋ถ€๋ชจ margin์— ํก์ˆ˜๋œ ๊ฒƒ.
        </p>
        <div class="parent">
          <div class="child">๋ฐ•์Šค1</div>
          <div class="child">๋ฐ•์Šค2</div>
        </div>
      </div>
      <div class="item">
        <h3>ํ•ด๊ฒฐ๋ฐฉ์•ˆ 1)</h3>
        <p>๋ถ€๋ชจ์— overflow : hidden; ์†์„ฑ์„ ๋ถ€์—ฌ</p>
        <div class="parent" style="overflow: hidden;">
          <div class="child brother-box">๋ฐ•์Šค1</div>
          <div class="child brother-box">๋ฐ•์Šค2</div>
        </div>
      </div>
      <div class="item">
        <h3>ํ•ด๊ฒฐ๋ฐฉ์•ˆ 2)</h3>
        <p>์ปจํ…์ธ  ์ถ”๊ฐ€ (์ž์‹ ํ˜•์ œ์š”์†Œ๊ฐ„ ๋งˆ์ง„๊ฒน์นจํ˜„์ƒ๋„ ์—†์–ด์ง)</p>
        <div class="parent" style="overflow: hidden;">๋ถ€๋ชจ๋‹˜
          <div class="child brother-box">๋ฐ•์Šค1</div>์ž์‹
          <div class="child brother-box">๋ฐ•์Šค2</div>
        </div>
      </div>
      <div class="item">
        <h3>ํ•ด๊ฒฐ๋ฐฉ์•ˆ 3)</h3>
        <p>๋ถ€๋ชจ์— border ์†์„ฑ์„ ๋ถ€์—ฌ</p>
        <div class="parent" style="border : 5px solid red;">
          <div class="child brother-box">๋ฐ•์Šค1</div>
          <div class="child brother-box">๋ฐ•์Šค2</div>
        </div>
      </div>
      <div class="item">
        <h3>ํ•ด๊ฒฐ๋ฐฉ์•ˆ 4)</h3>
        <p>๋ถ€๋ชจ์— padding ์†์„ฑ์„ ๋ถ€์—ฌ</p>
        <div class="parent" style="padding : 10px;">
          <div class="child brother-box">๋ฐ•์Šค1</div>
          <div class="child brother-box">๋ฐ•์Šค2</div>
        </div>
      </div>
    </div>

 

css

      .m-c-container {
        display: flex;
        flex-wrap: wrap;
        justify-content: space-evenly;
        border: 2px solid #333;
        padding: 20px;
        margin-bottom : 20px;
      }

      .item {
        width: 45%;
      }

      .parent {
        width: 200px;
        background-color: #77b11a;
      }
      .child {
        border: 1px solid black;
        background-color: #3a5e00;
        color: white;
        padding: 20px;
        margin: 30px;
      }


      @media screen and (max-width: 767px) {
        .item {
          width: 100%;
        }
      }

 

margin-collapsing

๋ถ€๋ชจ ์ž์‹ ์š”์†Œ

์ž์‹์—๊ฒŒ margin : 30px์ด ์ฃผ์–ด์ ธ์žˆ์ง€๋งŒ, ๋ถ€๋ชจ ์š”์†Œ์˜ ๋†’์ด์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋„˜์–ด์„œ๊ณ  ์žˆ๋‹ค. ์ฆ‰ ์ž์‹์˜ margin์€ ๋ถ€๋ชจ margin์— ํก์ˆ˜๋œ ๊ฒƒ.

๋ฐ•์Šค1
๋ฐ•์Šค2

ํ•ด๊ฒฐ๋ฐฉ์•ˆ 1)

๋ถ€๋ชจ์— overflow : hidden; ์†์„ฑ์„ ๋ถ€์—ฌ

๋ฐ•์Šค1
๋ฐ•์Šค2

ํ•ด๊ฒฐ๋ฐฉ์•ˆ 2)

์ปจํ…์ธ  ์ถ”๊ฐ€ (์ž์‹ ํ˜•์ œ์š”์†Œ๊ฐ„ ๋งˆ์ง„๊ฒน์นจํ˜„์ƒ๋„ ์—†์–ด์ง)

๋ถ€๋ชจ๋‹˜
๋ฐ•์Šค1
์ž์‹
๋ฐ•์Šค2

ํ•ด๊ฒฐ๋ฐฉ์•ˆ 3)

๋ถ€๋ชจ์— border ์†์„ฑ์„ ๋ถ€์—ฌ

๋ฐ•์Šค1
๋ฐ•์Šค2

ํ•ด๊ฒฐ๋ฐฉ์•ˆ 4)

๋ถ€๋ชจ์— padding ์†์„ฑ์„ ๋ถ€์—ฌ

๋ฐ•์Šค1
๋ฐ•์Šค2

 

์ด ์™ธ์—๋„ ๊ฐ€์ƒ์š”์†Œ (::before)๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋“ฑ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•ด๊ฒฐ๋ฐฉ์•ˆ์ด ์žˆ๋‹ค.