
목차
- 박스 모델 속성
width: 박스 모델 너비 지정height: 박스 모델 높이 지정box-sizing: 박스 모델 크기 계산하는 기준 지정box-shadow: 박스 모델에 그림자 효과 추가- 테두리 속성
border-style: 테두리 스타일 지정border-위치-style: top, right, bottom, left 중에 선택해서 특정 위치의 테두리 스타일만 지정border-width: 테두리 두께 지정border-위치-width: top, right, bottom, left 중에 선택해서 특정 위치의 테두리 두께 지정border-color: 테두리 색상 지정border-위치-color: top, right, bottom, left 중에 선택해서 특정 위치의 테두리 색상 지정border-radius: 꼭지점을 둥글게border-위치-radius: top-left, top-right, bottom-right, bottom-left 등 선택해서 특정 꼭지점만 둥글게border: 테두리 두께, 색상, 스타일 한번에 적용border-위치: top, right, bottom, left 중에 선택해서 특정 위치의 테두리 두께, 색상, 스타일 한번에 적용- 여백 속성
margin: 마진 지정margin-위치: top, right, bottom, left 중에 선택해서 특정 위치의 마진 지정padding: 패딩 지정padding-위치: top, right, bottom, left 중에 선택해서 특정 위치의 패딩 지정- 레이아웃 속성
display: 화면에서 요소를 배치 방법 지정 (block, inline, inline-block, none 등)float: 웹 요소를 왼쪽이나 오른쪽에 배치 (float 를 적용한 요소는 clear속성으로 해제하지 않으면 뒤에 오는 요소도 계속 왼쪽이나 오른쪽으로 연결해서 배치됨)- 위치 지정 속성
left, right, top, bottom: 기준 위치와 요소 사이에 상하좌우 얼마나 떨어져 있는지 지정position: 웹 요소의 위치를 지정 (static, relative, absolute, fixed)
박스 모델은 블록 라벨 요소인지 인라인 라벨 요소인지에 따라 나열 방법이 달라짐
<h1>, <div>, <p> 등<span>, <img>, <strong> 등박스 모델은 콘텐츠 영역, 패딩, 테두리, 마진 등의 요소로 구성됨

박스 모델은 상하좌우 4개의 방향이 있음
테두리, 마진, 패딩 등 지정할 때, 한꺼번에 똑같은 값으로 지정하거나, 모두 다르게 지정 가능

width : 박스 모델의 콘텐츠 영역의 너비 지정height : 박스 모델의 콘텐츠 영역의 높이 지정width: 콘텐츠너비 | auto;
height: 콘텐츠높이 | auto;px이나 em단위로 크기를 지정하거나 박스 모델을 포함하는 부모 요소 기준으로 백분율로 지정box-sizing : 박스 모델 크기 계산하는 기준 지정box-sizing: border-box | content-box;box-shadow : 박스 모델에 그림자 효과 추가box-shadow: 수평거리 수직거리 흐림정도 번짐정도 색상 inset;border-style : 테두리 스타일 지정border-위치-style : top, right, bottom, left 중에 선택해서 특정 위치의 테두리 스타일만 지정border-style: none | hidden | solid | dotted | sashed | double | groove | inset | outset | ridge;border-collapse: collapse일 경우 다른 테두리도 표시되지 않음)border-collapse: seperate일 경우 전체 박스 테두리가 창에 박혀 있는 것처럼 표시되고, border-collapse: collapse인 경우 groove와 동일하게 표시border-collapse: seperate일 경우 전체 박스 테두리가 창에서 튀어나온 것처럼 표시되고, border-collapse: collapse인 경우 ridge와 동일하게 표시border-width : 테두리 두께 지정border-위치-width : top, right, bottom, left 중에 선택해서 특정 위치의 테두리 두께 지정border-width: 크기 | thin | medium | thick;border-width: 4방향크기;
border-width: 위아래크기 좌우크기;
border-width: 위크기 우크기 아래크기; /*좌크기는 마주보는 우크기와 동일하게*/
border-width: 위크기 우크기 아래크기 좌크기;border-color : 테두리 색상 지정border-위치-color : top, right, bottom, left 중에 선택해서 특정 위치의 테두리 색상 지정border-color: 색상;border-radius : 꼭지점을 둥글게border-위치-radius : top-left, top-right, bottom-right, bottom-left 등 선택해서 특정 꼭지점만 둥글게border-radius: 크기 | 백분율;
border-radius: 가로반지름 / 세로반지름;border : 테두리 두께, 색상, 스타일 한번에 적용 (순서 상관 없음)border-위치 : top, right, bottom, left 중에 선택해서 특정 위치의 테두리 두께, 색상, 스타일 한번에 적용 (순서 상관 없음)border: 3px dotted blue; /*모든 테두리를 3px 파란색 점선*/
border-bottom: 3px solid gray; /*아래쪽 테두리 3px 회색 실선*/예시
<style>
.box{
width:100px;
height: 100px;
background-color: tomato;
border-radius: 10px;
}
div{
width: 70px;
height: 40px;
background-color: #9999cc;
/* rgb값 또는 색상코드(rgb값을 16진수로 변환한 것) 로 생상 줄 수 있음 */
margin: 10px;
border-width: 5px;
}
.solid{
border-style: solid; /* 단선 */
}
.double{
border-style: double; /* 이중선 (border두께는 동일) */
}
.dotted{
border-style: dotted; /* 점선 */
}
.dashed{
border-style: dashed; /* 파선 */
}
.groove{
border-style: groove; /* 테두리가 파인 모양 */
}
.ridge{
border-style: ridge; /* 테두리가 튀어나온 모양 */
}
.inset{
border-style: inset; /* contents까지 파인 모양 */
}
.outset{
border-style: outset; /* contents까지 튀어나온 모양 */
}
.underline{
background-color: skyblue;
text-align: center;
line-height: 40px;
/* contents높이만큼 line-height를 설정하면 내용이 위아래 가운데정렬 */
border-bottom-style: double;
border-left-style: dashed;
border-right-style: dotted;
border-top-style: inset;
border-top-width: 10px;
}
</style>
...
<div class="box"></div>
<div class="solid"></div>
<div class="double"></div>
<div class="dotted"></div>
<div class="dashed"></div>
<div class="groove"></div>
<div class="ridge"></div>
<div class="inset"></div>
<div class="outset"></div>
<div class="underline">밑줄</div>

margin : 마진 지정
margin-위치 : top, right, bottom, left 중에 선택해서 특정 위치의 마진 지정
margin: 크기 | 백분율 | auto;
margin: 4방향동일크기;
margin: 위아래크기 좌우크기;
margin: 위크기 우크기 아래크기; /*좌크기는 우크기와 동일하게*/
margin: 위크기 우크기 아래크기 좌크기;
웹 문서를 가운데 정렬하는 방법 :
- 우선, 배치할 요소의 너비값이 정해져 있어야 한다.
- margin-left와 margin-right의 속성값을 auto로 지정한다.
- 위의 두 항목처럼 지정하면, 웹 브라우저 화면 너비에서 웹 요소 너비값을 뺀 나머지 영역을 좌우 마진으로 자동 계산된다.
마진 중첩 (margin overlap) :
요소를 세로로 배치할 때, 위 마진과 아래 마진이 서로 만나면서 큰 마진값으로 합쳐지는 것
(오른쪽 마진과 왼쪽 마진이 만날 때는 중첩되지 않음)
padding : 패딩 지정
padding-위치 : top, right, bottom, left 중에 선택해서 특정 위치의 패딩 지정
padding: 크기 | 백분율 | auto;
padding: 4방향동일크기;
padding: 위아래크기 좌우크기;
padding: 위크기 우크기 아래크기; /*좌크기는 우크기와 동일하게*/
padding: 위크기 우크기 아래크기 좌크기;
display : 화면에서 요소를 배치 방법 지정 (block, inline, inline-block, none 등)
display: block | inline | inline-block | none;
disply속성은 주로 웹 문서의 내비게이션의 메뉴 항목을 가로로 배치할 때와 이미지를 표 형태로 배치하는 데 주로 사용
예시 : 수평 내비게이션 만들기
<style>
* { box-sizing: border-box; } /*모든 요소에 테두리까지 포함한 너비값 지정*/
nav ul { list-style: none; } /*불릿이나 숫자 번호 없앰 */
nav ul li {
display: inline-block; /*인라인 라벨, 블록 라벨 모두 지정*/
padding: 20px; /*패당값 20px */
margin: 0 20px; /* 좌우 마진값 20px */
border: 1px solid #222; /* 메뉴 테두리 지정 */
}
</style>
...
<nav>
<ul>
<li>menu1</li>
<li>menu2</li>
<li>menu3</li>
<li>menu4</li>
</ul>
</nav>

float : 웹 요소를 왼쪽이나 오른쪽에 배치 (float 를 적용한 요소는 clear속성으로 해제하지 않으면 뒤에 오는 요소도 계속 왼쪽이나 오른쪽으로 연결해서 배치됨)
float: left | right | none;
웹 요소를 떠 있게 만든다는 것 = 요소가 왼쪽 구석이나 오른쪽 구석으로 배치된다는 것
<p>는 블록 라벨 요소이므로 이미지와 나란히 한 줄에 배치할 수 없는데, float속성을 사용하여 이미지를 왼쪽 구석으로 표시하고 그 주변에 텍스트가 둘러싸도록 표시 가능
clear : float속성 해제
clear: left | right | both;
float: left를 해제float: right를 해제float: left와 float: right를 둘 다 해제예제 : 레이아웃 만들기
<style>
body { margin:0; }
.wrapper {
width : 500px;
height : 500px;
}
header {
height : 10%;
background-color: #ea4335;
}
nav {
height : 10%;
background-color:#FF5e00;
}
.side {
width : 30%;
height : 60%;
background-color: #4285f4;
float:left;
}
.section {
width : 70%;
height : 30%;
float:right;
}
.item2 {
background-color: #fbbc05;
}
.item1 {
background-color: #34a853;
}
footer {
height : 20%;
background-color: #8a8d92;
clear: both;
}
</style>
...
<div class="wrapper">
<header>헤더</header>
<nav>내비게이션</nav>
<div class="side">사이드바</div>
<div class="section item1">세션1</div>
<div class="section item2">세션2</div>
<footer>푸터</footer>
</div>

left, right, top, bottom : 기준 위치와 요소 사이에 상하좌우 얼마나 떨어져 있는지 지정
left | right | top | bottom: 거리;
position속성으로 기준 위치를 정한 뒤, 요소의 위치를 left, right, top, bottom속성에서 선택하여 지정
position : 웹 요소의 위치를 지정(배치)
position: static | relative | absolute | fixed | sticky;
position: relative 를 지정해야 원하는 대로 지정 가능position: relative가 없으면 상위 요소를 찾아보고, 그래도 없으면 더 위의 요소를 찾아봄overflow: auto;를 설정하여 스크롤 동작을 설정하고 사용한다