/* 절대적 단위 */
선택자 { width: 1000px; height: 800px; }
/* 상대적 단위 */
선택자 { width: 1vw; } /* 10px */
선택자 { height: 1vh; } /* 8px */
a, span, br, strong, label...
등선택자 { display: inline; }
/* 예제 */
.list1 li {
display: inline;
padding: 10px;
margin: 10px;
}
img, input, button
등 (button은 inline요소로 분류되기도 함)선택자 { display: inline-block; }
/* 예제 */
.list1 li {
display: inline-block;
padding: 10px;
margin: 10px;
}
div, ul, li, table, hr, form, h1, p...
선택자 { display: block; }
선택자 { float: none | left | right; }
/* 예제 */
.list3 { overflow: hidden; }
.list3 li { float: left; }
.list4 li { float: left; }
.list4::after { display: block; content:""; clear: both; }
/*
float를 적용하면(떠 있는 상태) 전체적인 레이아웃이 망가짐
- 해결책 1) 부모요소에 overflow: hidden
- 해결책 2) 부모요소에 :after을 이용해 가상의 공간을 생성하고 clear 속성 부여
가상의 공간을 만들어 overflow: hidden과 같은 효과를 냄
list4 클래스에 적용된 위 방법이 overflow: hidden보다 더 많이 사용됨.
*/
*/
float 사용 후
overflow
orclear
미사용
float 사용 후
overflow
orclear
사용
선택자 { display: table | tabel-row | table-cell... }
/* 예제 */
#wrap { display: table; width: 500px; height: 400px;
table-layout: fixed;
/*
auto: 기본값, 셀 안의 컨텐츠 양에 따라 각 셀이 늘어남
fixed: 셀 너비 고정
*/
word-break: break-all;
/*
white-space와 비슷.
단어의 분리를 어떻게 할 것인지 결정.
normal: 기본값,
break-all: 연결된 단어 사이라도 줄바꿈됨(강제줄바꿈)
keep-all: 줄바꿈 안됨(x), 한중일 언어만 지원. 영어는 normal과 동일
*/
}
#wrap > div { display: table-cell; text-align: center; vertical-align: middle; }
display: table을 적용하지 않았을 때
display: table을 적용했을 때
- 해당 이미지처럼 표시하려면 display: table을 적용하고 자식 요소에 display: table-cell을 적용하면 된다.
table
: table 요소처럼 표현합니다.table-caption
: caption 요소처럼 표현합니다.table-column-group
: colgroup 요소처럼 표현합니다.table-header-group
: thead 요소처럼 표현합니다.table-footer-group
: tfoot 요소처럼 표현합니다.table-row-group
: tbody 요소처럼 표현합니다.table-cell
: td 요소처럼 표현합니다.table-column
: col 요소처럼 표현합니다.table-row
: tr 요소처럼 표현합니다.auto
: 기본값, 셀 안의 컨텐츠 양에 따라 각 셀이 늘어남fixed
: 셀 너비 고정 선택자 { display: table | tabel-row | table-cell... }
/* 예제 */
#wrap { display: table; width: 500px; height: 400px;
table-layout: fixed;
/*
auto: 기본값, 셀 안의 컨텐츠 양에 따라 각 셀이 늘어남
fixed: 셀 너비 고정
*/
word-break: break-all;
/*
white-space와 비슷.
단어의 분리를 어떻게 할 것인지 결정.
normal: 기본값,
break-all: 연결된 단어 사이라도 줄바꿈됨(강제줄바꿈)
keep-all: 줄바꿈 안됨(x), 한중일 언어만 지원. 영어는 normal과 동일
*/
}
#wrap > div { display: table-cell; text-align: center; vertical-align: middle; }
table-layout: auto를 적용했을 때
table-layout: fixed를 적용했을 때
white-space
와 비슷함normal
: 기본값break-all
: 연결된 단어여도 영역을 넘어가면 줄바꿈된다. (강제줄바꿈)keep-all
: 줄바꿈 안됨. 한중일 언어만 지원한다. 영어는 normal
과 동일선택자 { display: table | tabel-row | table-cell... }
/* 예제 */
#wrap { display: table; width: 500px; height: 400px;
table-layout: fixed;
/*
auto: 기본값, 셀 안의 컨텐츠 양에 따라 각 셀이 늘어남
fixed: 셀 너비 고정
*/
word-break: break-all;
/*
white-space와 비슷.
단어의 분리를 어떻게 할 것인지 결정.
normal: 기본값,
break-all: 연결된 단어 사이라도 줄바꿈됨(강제줄바꿈)
keep-all: 줄바꿈 안됨(x), 한중일 언어만 지원. 영어는 normal과 동일
*/
}
#wrap > div { display: table-cell; text-align: center; vertical-align: middle; }
word-break: normal
을 적용했을 때
word-break: break-all
을 적용했을 때
inline, inline-block, table cell
의 수직 정렬을 설정한다.block
요소인 div
는 작동되지 않음line-height
설정에 따라서도 달라질 수 있다.baseline
: 기본값, 부모 요소의 기준 선에 맞춤sub
: 부모의 아래첨자 기준선에 맞춤super
: 부모의 위첨자 기준선에 맞춤text-top
: 요소의 맨 위를 부모 font의 맨 위에 맞춤text-bottom
: 요소의 맨 아래를 부모 font의 맨 아래에 맞춤top
: 부모 요소 위에 위치middle
: 부모 요소 중앙에 위치bottom
: 부모 요소 아래에 위치선택자 { vertical-align: top | middle | bottom | ...; }
/* 예제 */
#practice {
width: 300px; height: 300px; background: linen;
display: table;
}
#practice > p {
display: table-cell;
text-align: center;
vertical-align:middle;
}
선택자 { position: static; }
/* 예제 */
.p1 { position: static; left: 100px; top: 200px; }
.p2 { position: relative; left: -50px; top: 50px; }
선택자 { position: relative; }
/* 예제 */
.p1 { position: static; left: 100px; top: 200px; }
.p2 { position: relative; left: -50px; top: 50px; }
선택자 { position: absolute; }
/* 예제 */
.box { width: 200px; height: 200px; }
.b1 {
position: absolute;
top: 150px;
left: 300px;
border: 5px solid DeepPink;
}
.b2 {
position: absolute;
top: 200px;
left: 350px;
background: lightpink;
}
.b3 {
position: absolute;
bottom: 70px;
right: 50px;
background: YellowGreen;
}
.b4 {
position: absolute;
bottom: 20px;
right: 20px;
border: 5px solid DarkOliveGreen;
}
선택자 { position: fixed; }
/* 예제 */
.b5 {
width: 70px; height: 70px;
background-image: linear-gradient(Thistle, SteelBlue);
position: fixed;
top: 50%; left: 50%;
}
선택자 { position: sticky; }
/* 예제 */
.b3 {
background: YellowGreen;
position: sticky;
top: 0; left: 400px;
}
평소
sticky 사용 시 브라우저 상단에 고정