margin
요소의 외부 여백을 지정하는 속성
margin : 1px 2px 3px 0;
/* top right bottom left 위에서부터 시계방향으로 4가지입력,
입력값이 없을시 별도로 단위를 입력하지 않는다.*/
/*모두 같을때*/
margin : 5px;
/* 위 5px , 좌우 10px, 아래 0*/
margin : 5px 10px 0;
/*위 아래 5px 좌우 10px*/
margin 5px 10px;
- top, bottom , right, left가 있으며
- (형제 태그의 경우) 형제 태그의 top, bottom margin은 겹친다(더 큰쪽에게 먹힌다)
- ※ 단 ! right , left 의 margin은 겹치지 않는다.
- (빈 블록의 경우) 빈 블록(높이가 없는경우) 에는 margin이 있음에도 불구하고 서로를 지나가서 영역을 침범한다.
- (부모안에 자식이 있는경우 )첫번째 자식이 margin-top 이 있거나 ,
마지막 자식이 margin-bottom 이 있는경우 부모의 영역을 뚫고 margin이 나온다. - 위의 해결방안은 부모를 blcok format context 로 만들어준다. (float나 overflow , position : absolute를 사용하는 방법이 있다.)
- ※ display: inline-block 과 width: 100%을 사용하면 위의 3가지 경우를 대부분 해결이 가능하다.
- margin: 0 auto; 부모에 맞춰 정렬
자식에게는 가능한 margin을 주지 않는것도 고려를 해봐야겠다..
padding
margin과 비슷하며 , 요소의 내부 여백을 지정하는 속성
See the Pen Untitled by J-Plum (@J-Plum) on CodePen.
1. 첫번째 div는 아무 옵션이 없는 div 태그입니다.
2. 테스트 1은 1번과 동일한 div 태그에 margin을 10 준 상태입니다.
margin : 10px 라는 옵션이기 때문에 4방향 전부 margin이 들어갑니다.
3. 3번은 padding : 10px를 준 상태이며, 요소 내부에 여백이 들어간걸 볼 수 있습니다.
box-sizing
요소의 크기 계산 기준을 지정합니다.
1. content-box (기본값) : 요소의 내용(content)으로 크기 계산
2. border-box : 요소의 내용(content) + padding + border로 크기 계산
See the Pen box-sizing by J-Plum (@J-Plum) on CodePen.
1. 첫번째 div의 경우
기본 요소 100*100px , padding 20 +20 (좌 우) border 2 +2 해서 144*144px 라는 크기가 나왔습니다.
하지만 2번째 div처럼 가로 세로를 100px로 하고싶습니다.
2. 3번째 div처럼 padding과 border을 빼준값인 56px로 가로 세로를 지정해서 바꿔줘야할까요..?
4. box-sizing을 border-box로 사용하면됩니다.
4번째 div를 보면, 가로 세로를 별도로 지정하지 않아도 3번 div와 같은걸 볼 수 있습니다.
즉 border-box는 요소의 크기 계산 자체를 content + padding + border 이 width * height가 되도록 해줍니다
그래서 content + 40 + 4 =100 이니 content가 자동으로 56이 되었습니다.
'CSS' 카테고리의 다른 글
[CSS] display에 대해서 (0) | 2023.03.08 |
---|---|
[CSS] overflow란? (0) | 2023.03.08 |
[CSS] 단위 (0) | 2023.03.07 |
[CSS] 너비(width, height) (0) | 2023.03.07 |
[CSS] 선택자 우선순위 (0) | 2023.03.06 |