[CSS3] CSS 레이아웃 스타일
by Yena Choi
Study Note
08 레이아웃을 위한 스타일
08-1 CSS와 박스 모델
블록 레벨 요소 / 인라인 레벨 요소
- 블록 레벨 요소 (block-level)
- 태그로 요소를 삽입했을 때, 혼자 한 줄을 차지하는 요소.
- 즉 해당 요소의 너비가 100%. 왼쪽이나 오른쪽에 다른 요소가 올 수 없다.
<p>
<h1>
~<h6>
<ul>
<ol>
<div>
<blockquote>
<form>
<hr>
<table>
<fieldset>
<address>
- 인라인 레벨 요소 (inline-level)
- 줄을 차지하지 않는 요소.
- 화면에 표시되는 콘텐츠만큼만 영역을 차지하고, 나머지 공간에 다른 요소가 온다.
<img>
<object>
<br>
<sub>
<sup>
<span>
<input>
<textarea>
<label>
<button>
박스 모델
- <p>와 같은 블록 레벨 요소는 모두 박스 모델 형태이다.
- 박스 모델은 콘텐츠, 패딩, 테두리, 마진 으로 구성된다.
width, height - 콘텐츠 영역의 크기
.style {
width: <크기> | <백분율> | auto;
height: <크기> | <백분율> | auto;
}
- 크기 -
px
이나cm
같은 단위+수치로 지정 - 백분율 - 박스 모델을 포함하는 부모 요소 를 기준으로 백분율로 지정
- auto - 기본값. 콘텐츠 양에 따라 자동으로 결정
- 실제 콘텐츠 크기 계산하기
- 일반: 박스 모델의 너비 = width + 좌우 패딩 + 좌우 테두리
- IE v6: 박스 모델의 width값 = 콘텐츠 너비 + 좌우 패딩 + 좌우 테두리
display - 화면 배치 방법 결정
- 이 속성을 통해 블록 레벨 - 인라인 레벨 요소를 바꿀 수 있다. 세로로 표시되는 목록을 가로로 바꿀 때, 한 줄로 표시되는 이미지에 여백과 테두리를 추가해 갤러리로 표시할 때 등.
.body {
display: none | contents | block | inline | inline-block | table | table-cell;
}
block
- 해당 요소를 블록 레벨로 지정inline
- 해당 요소를 인라인 레벨로 지정- ex)
<li>
태그는 블록 요소이기 때문에 수직으로 배치되지만,<inline>
속성을 주면 수평 내비게이션용 목록으로 사용할 수 있다.
- ex)
inline-block
- 인라인 레벨로 배치하면서 내용에는 블록 레벨 속성을 지정none
- 해당 화면 요소를 표시하지 않고, 공간도 차지하지 않는다.
08-2 테두리 관련 속성
border-style - 테두리 스타일 지정
- 기본값은 none.
- border-style 속성
속성 값 | 설명 |
---|---|
none | 테두리 없음 |
hidden | 테두리 나타나지 않음. border-collapse:collapse 일 경우, 다른 테두리도 표시 X |
solid | 실선 테두리 |
dashed | 짧은 직선 테두리 |
dotted | 점선 테두리 |
double | 이중선 테두리. 두 선의 간격은 border-width 로 지정 |
groove | 창에 조각한 것처럼 표시. 입체적으로 보임 |
그외 inset, outset, ridge 등이 있다.
border-width - 테두리 두께
- 테두리 크기를 직접 입력하거나, 키워드를 선택해서 테두리 두께 지정
.example {
border-top-width: <크기> | thin | medium | thick;
border-right-width: <크기> | thin | medium | thick;
border-bottom-width: <크기> | thin | medium | thick;
border-left-width: <크기> | thin | medium | thick;
border-width: <크기> | thin | medium | thick;
/* 예시 */
border-width: 5px 10px 15px 20px;
}
border-width
로 값을 지정할 때,- 값이 1개면 전체 테두리 두께 지정
- 값이 2개면 위/아래, 좌우 를 묶어서 지정
- 값이 4개면 시계방향 (top - right - bottom - left) 순으로 지정
border-color - 테두리 색상
.example {
border-top-color: <색상>;
border-right-color: <색상>;
border-bottom-color: <색상>;
border-left-color: <색상>;
border-color: <색상>;
}
border - 테두리 스타일 묶어서 지정
.example {
border-top: <두께> | <색상> | <스타일>;
border-right: <두께> | <색상> | <스타일>;
border-bottom: <두께> | <색상> | <스타일>;
border-left: <두께> | <색상> | <스타일>;
border: <두께> | <색상> | <스타일>;
}
border-radius - 박스 모서리 둥글게
- 선택한 모서리를 원의 반지름(radius)만큼 곡선으로 나타낸다.
- 크기를 px, em 등과 같은 수치로 나타낼 수 있으며, 현재 요소 크기 기준 백분율로도 가능.
border-radius
로 한번에 속성을 정할 경우, 슬래시를 넣어 가로와 세로 반지름을 구분.
.example {
border-top-left-radius: <크기> | <백분율>;
border-top-right-radius: <크기> | <백분율>;
border-bottom-right-radius: <크기> | <백분율>;
border-bottom-left-radius: <크기> | <백분율>;
border-radius: <가로 크기> / <세로 크기>;
}
box-shadow - 그림자 효과
- 그림자의 위치, 색상, 흐림 정도를 조절할 수 있다.
- 수평 거리, 수직 거리는 필수이며 기타 속성 값은 옵션.
속성 값 | 설명 |
---|---|
수평 거리 | 수평으로 얼마나 떨어져있는지. 양수는 오른쪽, 음수는 왼쪽에 그림자 생성 |
수직 거리 | 수직으로 얼마나 떨어져있는지. 양수는 아래쪽, 음수는 위쪽에 그림자 생성 |
흐림 정도 | blur radius 지정. 기본값은 0이며 진한 그림자, 커질수록 부드러운 그림자 생성 |
번짐 정도 | 양수는 모든 방향으로 퍼져 나가기 때문에 그림자가 박스보다 크게 표시된다. 음수일 경우, 모든 방향으로 축소되어 보인다. 기본 값은 0 |
색상 | 한 가지 색상 or 공백으로 구분해 여러 개의 색상을 지정할 수도 있다. 기본값은 현재 글자 색 |
inset | 안쪽 그림자 옵션 |
08-3 여백을 조절하는 속성
margin - 요소 주변 여백
.example {
margin-top: <크기> | <백분율> | auto;
margin-right: <크기> | <백분율> | auto;
margin-bottom: <크기> | <백분율> | auto;
margin-left: <크기> | <백분율> | auto;
margin: <크기> | <백분율> | auto;
}
margin
값을 지정할 때,- 값이 1개면 전체 여백 두께 지정
- 값이 2개면 위/아래, 좌우 를 묶어서 지정
- 값이 4개면 시계방향 (top - right - bottom - left) 순으로 지정
margin-left
와margin-right
를auto
로 지정하면 웹 요소를 중앙에 배치할 수 있다.
padding - 콘텐츠와 테두리 사이 여백
- 사용법은 maring과 비슷하다.
.example {
padding-top: <크기> | <백분율> | auto;
padding-right: <크기> | <백분율> | auto;
padding-bottom: <크기> | <백분율> | auto;
padding-left: <크기> | <백분율> | auto;
padding: <크기> | <백분율> | auto;
}