본문 바로가기
Web/CSS

[CSS] margin 겹침

by print_soo 2023. 5. 9.

1. 마진겹침(h1끼리)

아래의 코드로 작성하고 살펴보면 아래의 이미지와 같은 주황색부분(마진)이 겹치는 현상이 나타나는데 이것을 마진겹침이라고 한다.

 

<!DOCTYPE html>
<html>

<head>
<title>Document</title>
<style>
    h1{
        border: 1px solid red;
        margin: 100px;
    }
</style>
</head>

<body>
    <h1>hello world!</h1>
    <h1>hello world!</h1>
</body>

</html>

 

이상적으로는 첫번째 hello world!와 두번째 hello world! 사이의 간격이 100px이어야한다. 하지만 위의 이미지를 보면 100px로 설정되어 있다.

 

왜그럴까?

마진은 위 아래로 마진이 서로 만날때 첫번째 hello world!의 마진값과 두번째 hello world! 의 마진 값중 큰 값으로 합쳐진다. 
이렇게 된 이유는 여러 요소를 세로로 배치할 때 맨위의 마진과 아래의 마진에 비해 중간에 있는 마진이 지나치게 커지는 것을 방지하기 위함이다.

 

2. 마진겹침(부모와 자식)

 

<!DOCTYPE html>
<html>

<head>
<title>Document</title>
<style>
    body{border: 1px solid red;}
    #parent{
        border: 1px solid blue; // 해당 부분을 주석처리하면 마진 겹침현상이 일어난다.
        margin-top:100px
    }
    #child{
        border: 1px solid green;
        background-color: powderblue;
        margin-top:50px
    }
</style>
</head>

<body>
    <div id="parent">
        <div id="child">
            hello world!
        </div>
    </div>
</body>

</html>

 

 

💡 부모 태그의 시각적인 요소가 없는 투명한 상태일때 부모 태그의 마진 값과 자식 태그의 마진 값중 더 큰값이 자식 태그의 마진 값이 된다. 💡

 

 

태그에 시각적 요소가 없다면 위 쪽에 있는 값과 아래 쪽에 있는 값중에서 더 큰 값이 그 태그의 마진 값이 된다!

 

'Web > CSS' 카테고리의 다른 글

[CSS] flex  (0) 2023.05.10
[CSS] position  (2) 2023.05.09
[CSS] box-sizing  (0) 2023.05.08
[CSS] box-model ⭐️⭐️⭐️  (0) 2023.05.08
[CSS] inline-level, block-level  (0) 2023.05.08