▼ HTML 요소는 박스(box)로 이루어져 있다. (박스 위에 박스를 얹거나 박스들을 배열하여 문서를 만들어 나간다.)
▼ HTML의 box 이해하기 <body> <header> <h1>Lorem</h1> </header> </body> : body박스 위에 header박스가, header박스 위에 h1박스가 놓인 형태이다.
▼ Box는 콘텐트(Content), 패딩(Padding), 테두리(Border), 마진(Margin)으로 구성된다.
Content
: 요소의 텍스트나 이미지 등의 실제 내용이 위치하는 영역이다. width, height 프로퍼티를 갖는다.Padding
: 테두리(border) 안쪽에 위치하는 요소의 내부 여백 영역이다.
기본적으로 투명하며 각 변마다 선의 굵기(width), 선의 형태(style), 선의 색상(color)를 지정할 수 있다. 요소에 적용된 배경의 컬러, 이미지는 패딩 영역까지 적용된다.Border
: 테두리 영역으로 border프로퍼티 값은 테두리의 두께를 의미한다.Margin
: 테두리(border) 바깥에 위치하는 요소의 외부 여백 영역이다.
기본적으로 투명하며 배경색을 지정할 수 없다. 주로 px, em, % 등의 단위를 사용한다.
▼ 각 영역을 꾸밀 때 사용하는 속성은 다음과 같다.
- 안쪽여백:
padding 속성
- 테두리:
border 속성
- 바깥 여백:
margin 속성
- 박스의 가로 크기:
width 속성
- 박스의 세로 크기:
height 속성
- 박스의 크기 기준:
box-sizing 속성
- 박스의 배경:
background 속성
▼ HTML, CSS <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> .aa { width: 200px; height: 300px; } .box1 { background-color: #d2f4ff; border: 2px solid #ccddff; } .box2 { background-color: #dddddd; border: 2px solid #ccdd33; } </style> </head> <body> <div class="aa box1"> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. </div> <div class="aa box2"> Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div> </body> </html>
▼ result
- 공통적으로 갖는 class속성과 각각 box1, 2로 구분하여 효과를 주는 속성을 나누어서 실행해 보았다.
기본적으로 width와 height 프로퍼티는 콘텐츠 영역을 대상으로 크기를 지정하므로, 전체크기는 다음과 같이 계산한다. ▼
전체 너비: 20 + 6 + 20 + 400 + 20 + 6 + 20
전체 높이: 20 + 6 + 20 + 100 + 20 + 6 + 20
max-width
: 요소 너비의 최대값을 지정한다. max-width: 300px
의 경우, 브라우저의 너비가 300px보다 작아지면 요소 너비는 브라우저의 너비에 따라서 작아진다.
min-width
: 요소 너비의 최소값을 지정한다. min-width: 300px
의 경우, 브라우저의 너비가 300px보다 작아져도 요소 너비는 지정 너비(300px)을 유지한다.
ex) margin-top: 40px;
margin-right: 25px;
margin-bottom: 20px;
margin-left: 5px;
: margin: 40px 25px 20px 5px; (top부터 시계방향이다.)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <style> div { width: 300px; height: 100px; background-color: #d2f4ff; border: 2px solid #ccddff; margin: 0 auto; } </style> </head> <body> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div> </body> </html>
▼ result
테두리(boder)를 구성하는 세가지 요소
:이 테두리는 각 변마다 선의 굵기(width)
, 선의 형태(style)
, 선의 색상(color)
을 지정할 수 있다.
none
선을 없앤다. 대부분 요소의 기본 값이다.solid
실선의 형태로 적용한다.dotted
점선 형태로 적용한다.dashed
바느질선 같은 형태의 점선이다.double
이중 선의 형태이다. 굵기가 3px 이상이 되어야 볼 수 있다.groove
입체적으로 선을 홈이 들어간 것처럼 보여준다. 최소 2px은 되어야 확인 가능하다.ridge
groove와 비슷하지만, 음영 값이 반대로 선이 돌출되어 보인다.inset
요소 전체가 안으로 들어가 보인다.outset
inset의 반대로, 요소 전체가 밖으로 돌출되어 보인다.inherit
부모의 속성을 상속받는다.
ex) div { border-top-width : 3px } : 상단 테두리 선 굵기를 선언할 경우 예시이다. 위치를 지정하지 않으면 4변이 동일하게 설정된다.
ex) div { border-color : red green blue yellow } : 색상순 차례대로 변의 상단,우측,하단,좌측으로 지정된다.
▼ 중복사용 코드를 줄여서 compact하게 정리한다.
div { border-width : 3px; border-style : dotted; border-color : red; } = div { border : 3px dotted red; }
top
, (right+left)
, bottom
으로 인식하고,(top+bottom)
, (right+left)
으로 인식한다.▼ HTML, CSS <!DOCTYPE html> <html> <head> <style> div { background: orange; color: #ffffff; display: inline-block; width: 90px; height: 90px; line-height: 90px; margin: 5px; text-align: center; } .aa { border-radius: 8px; } .bb { border-radius: 50%; } .cc { border-radius: 10px 30px; } </style> </head> <body> <div class="aa">8px</div> <div class="bb">50%</div> <div class="cc">10px 30px</div> </body> </html>
▼ result
위에서 line-height는 줄 높이를 정하는 속성이다.
content-box
(기본값)border-box
ex) * { box-sizing: border-box; }
,
를 넣거나, 맨뒤에 ;
(세미콜론) 을 붙이지 않거나, 속성을 주려는 태그와는 다른 태그를 사용하거나 등의 실수가 전부 화면상에서 다르게 표시되므로(줄이 사라지거나 여백이 이상해지는 등) 주의하자.reference : https://poiemaweb.com/ https://www.codingfactory.net/10556