CSS 여백
CSS 바깥여백(margin)
CSS margin
속성은 정의 된 테두리 밖의 요소 주위에 공백을 만드는 데 사용됩니다.
요소의 각면 (위쪽, 오른쪽, 아래쪽, 왼쪽)의 여백을 설정하는 속성이 있습니다.
각 방향의 여백(margin)
CSS에는 요소의 각면에 대한 여백을 지정하는 속성이 있습니다.
margin-top
margin-right
margin-bottom
margin-left
모든 margin
속성은 다음 값을 가질 수 있습니다.
auto
- 브라우저가 여백을 계산합니다.length
- px, pt, cm 등의 여백을 지정합니다.%
- 포함하는 요소의 너비에 대한 여백을 %(10%, 20% ...)로 지정합니다.inherit
- 부모 요소에서 여백을 상속해야 함을 지정합니다.
음수 값이 허용됩니다.
Example
이 요소 주위에 여백이 생성됩니다.
<style>
div {
border: solid;
}
p {
margin-top: 100px;
margin-bottom: 100px;
margin-right: 150px;
margin-left: 80px;
border: solid;
}
</style>
<div>
<p>이 요소 주위에 여백이 생성됩니다.</p>
</div>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
margin shorthand - 한줄로 작성하기
margin
역시 border 에서 그랬던 것처럼 코드를 줄이기 위해 하나의 속성에서 모든 여백 속성을 지정할 수 있습니다. 순서도 border
에서와 같이 시계방향입니다.
순서는 다음과 같습니다.
margin-top
, margin-right
, margin-bottom
, margin-left
실제로 다음과 같이 사용합니다.
p {
margin: 25px 50px 75px 100px;
}
/* 위의 코드는 아래와 같습니다. */
p {
margin-top: 25px;
margin-right: 50px;
margin-bottom: 75px;
margin-left: 100px;
}
2
3
4
5
6
7
8
9
10
만약 margin
이 3개의 값을 가진다면 top
, right & left
, bottom
의 값입니다.
실제로 다음과 같이 사용합니다.
p {
margin: 25px 50px 75px;
}
/* 위의 코드는 아래와 같습니다. */
p {
margin-top: 25px;
margin-right: 50px;
margin-bottom: 75px;
margin-left: 50px;
}
2
3
4
5
6
7
8
9
10
margin
이 2개의 값을 가진다면 top & bottom
, right & left
의 값을 가집니다.
p {
margin: 25px 50px;
}
/* 위의 코드는 아래와 같습니다. */
p {
margin-top: 25px;
margin-right: 50px;
margin-bottom: 25px;
margin-left: 50px;
}
2
3
4
5
6
7
8
9
10
margin
이 1개의 값을 가진다면 모든 방향이 같은값을 가집니다.
p {
margin: 25px;
}
/* 위의 코드는 아래와 같습니다. */
p {
margin-top: 25px;
margin-right: 25px;
margin-bottom: 25px;
margin-left: 25px;
}
2
3
4
5
6
7
8
9
10
margin auto 값
margin
속성을 auto
로 설정하여 컨테이너 내에 요소를 가로로 가운데 놓을 수 있습니다.
요소는 지정된 너비를 차지하고 나머지 공간은 왼쪽 및 오른쪽 여백
사이에서 균등하게 분할됩니다.
Example
<style>
.container {
height: 100px;
width: 100%;
border: 1px solid skyblue;
}
.margin-auto-box {
height: 50px;
width: 300px;
margin: auto;
border: 1px solid red;
}
</style>
<div class="container">
<div class="margin-auto-box"></div>
</div>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
margin: auto
값은 기본적으로 block
요소,
즉 display: block;
인 요소들에 적용됩니다.
display: inline;
, display: inline-block;
과 같은 요소에 적용하면
좌우 auto
정렬을 적용할 수 없습니다.
응용
실제로 자주 사용되는 표현중에
div {
margin: 0 auto;
}
2
3
처럼 쓰는때가 있습니다.
이는 display: block;
인 요소를 대상으로
상하는 여백을 없애고 좌우의 여백
을 auto
로 놓으면서 요소를 가운데 정렬 시키는 방법입니다.
<style>
div.wrap {
height: 100px;
width: 100%;
border: 1px solid skyblue;
}
div.auto {
width: 150px;
margin: 0 auto;
border: 1px solid red;
}
</style>
<div class="wrap">
<div class="auto">margin: 0 auto</div>
</div>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
margin inherit 값
이 예제에서는 <p class="ex1">
요소의 왼쪽 여백을 상위 요소 (<div class="ex1">
)에서 상속 할 수 있습니다.
Example
inherit 값으로 부모의 여백을 상속
<style>
div {
border: 2px solid green;
}
div.ex1 {
border: 2px solid red;
margin-left: 100px;
}
p.ex1 {
border: 2px solid blue;
margin-left: inherit;
}
</style>
<div>
<div class="ex1">
<p class="ex1">inherit 값으로 부모의 여백을 상속</p>
</div>
</div>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
margin 축소
요소의 위쪽 및 아래쪽 margin
은 두 개의 여백 중 가장 큰 것과 동일한 단일 여백으로 축소됩니다.
왼쪽, 오른쪽 여백에는 이런 일이 발생하지 않습니다.
위쪽, 아래쪽 여백만 발생합니다.
<div style="background: skyblue;">
<div style="margin: 0 0 50px 0;background: green;">111</div>
<div style="margin: 20px 0 0 0;background: grey;">222</div>
</div>
2
3
4
위에서 111
과 222
사이의 여백은
111
에서의 하단여백 50px
과 222
에서의 상단여백 20px
이 합쳐진
70px
이 될 것이라고 생각할 수 있지만
둘중에 큰 값인 50px
으로 축소되어 적용됩니다.
<div style="background: skyblue;">
<div style="margin: 0 50px 0 0;background: green;">111</div>
<div style="margin: 0 0 0 50px;background: grey;">222</div>
</div>
2
3
4
좌우 여백에 대해서는 별로 상관이 없습니다.
전체 소스로 실습하기
← CSS 테두리 CSS padding →