: 모든 html 요소는 박스(box)모양으로 구성되며, 이를 박스모델(boxmodel)이라고 한다. 박스모델은 '마진(margin), 패딩(padding), 테두리(border), 내용(content)'의 4가지로 구성되어 있다.
콘텐츠(content): 텍스트나 이미지가 들어있는 박스의 실질적인 내용부분으로, 열린태그와 닫힌태그 사이에 있는 것들을 이야기한다.
패딩(padding): 내용과 테두리 사이의 간격이다. 패딩은 눈에 보이지 않는다.
패딩값을 주었을 때, 콘텐츠 안에서 공간을 차지하는 것이 아니라 주어진 값만큼 공간이 생겨나므로 선택된 영역의 크기가 달라질 수 있다.
테두리(border): 내용과 패딩을 감싸는 테투리이다.
마진(margin): 테두리와 이웃하는 요소 사이의 간격이다. 마진은 눈에 보이지 않는다.
margin-left: 100px;
margin-top: 100px;
padding-left: 100px;
padding-top: 100px;
위와 같이 마진과 패딩값을 부여할 수도있지만 반복되고 길어지는 코드를 방지하기 위해서 다음과 같이 입력할 수도 있다.
margin: 100px 0 0 100px;
padding: 100px 0 0 100px;
이는 12시 기준으로 시계방향으로 입력하는 순서이다.
margin: top right bottom left 순서로 값을 입력하면 된다.
* 코드가 길어지면 안좋은 이유: css의 코스 분량이 늘어날 수록 파일 용량이 늘어나기 때문에 실제 사이트에서 해당 페이지를 가져오는 시간(웹사이트 로딩속도)이 느려질 수 있다.
* 마진과 패딩의 기준은 border, border가 없다면 값이 0인상태라고 생각하면 된다.
: 박스의 크기를 화면에 표시하는 방식을 변경하는 속성이다. 기본은 width와 height로 박스의 크기를 지정하는데, 이때 테두리는 크기에 포함하지 않기때문에 실제 크기를 원하는 사이즈로 지정하기 어렵다.
이때, box-sizing: border-box로 지정해주면 테두리를 포함한 크기를 지정하게된다. 또한, 패딩을 입력했을때에도 원래 크기에서 패딩값이 추가되는 것이 아니라 공간안에 패딩과 볼더값이 적용된다.
.margin-one{
width: 100%;
height: 100px;
background-color: yellow;
margin-bottom: 100px;
}
.margin-two{
width: 100%;
height: 100px;
background-color: blue;
margin-top: 50px;
}
→ 위의 경우 마진원은 아래쪽에, 마진투는 위쪽에 마진값을 적용했고, 두마진은 겹치게되며 두 요소 사이의 간격은 100px 이다. (150px 아님!)
블록요소 : 줄바꿈이 일어나는 형태로 영역의 너비가 상위영역의 전체너비만큼 되는 형태이다. 즉, 너비를 지정해주지않으면 한행 전체를 포함한다. 블록요소에 포함되는 요소들로는 h1~6, p, div등이 있다.
인라인요소 : 블록요소와 반대로 줄바꿈이 일어나지 않는 형태이다. 인라인 형태의 요소들로는 a, img, strong, span등이 있다. 각각의 인라인 사이에는 기본적으로 공백이 있다. (추후 배울 예정)
블록 | 인라인 | |
---|---|---|
마진공간을 넣을 수 있는가? | O | X |
패딩공간을 넣을 수 있는가? | O | X |
서로를 포함할 수 있는가? | O | X |
display: inline-block;
위와 같이 display를 이용하면, 블록과 인라인의 특징을 서로 바꿀 수도 있다.
h1{display: inline;}
인라인의 특징을 가지는 h1
span{display: block;}
블록의 특징을 가지는 span
: inline 또는 table cell box에서의 수직정렬을 지정한다.
{vertical-align: (top,bottom,middle 중 택1)}
top은 상단 선을 기준으로 정렬, bottom은 아래선을 기준으로, middle은 중앙을 기준으로 정렬한다.
인라인에만 적용가능하며, 블럭요소에는 적용되지않는다.
img의 경우 기본적으로 inline-block의 성격을 가지고 있어서, vertical-align이 적용된다.
: 문서 상의 요소를 배치하는 방법을 지정한다.
웹페이지는 2차원과 3차원을 조합해서 만들어진다.
-> 모든 html태그는 포지션 스테이틱을 디폴트값으로 가지고 있고 이는 html이 2차원의 성격을 가지고있다는 뜻이다.
ex) 쇼핑몰홈페이지 등에서 페이지스크롤을 내려도 따라다니는 배너광고 등 이 포지션 픽스드에 해당됨
※ top,left,right,bottom은 자기 자신이 주체가 되어서 움직이는 속성. 마진과 패딩은 공백을 넣음으로써 밀려서 이동이되었는데, 이것은 위쪽 여백이 생기는 것이다.