어제에 이어서 오늘은 CSS를 정리해보자
본 포스트는 'Do it 웹 표준의 정석'을 바탕으로 작성하였다.
❓CSS란?
✔ Cascading Style Sheets(CSS)는 HTML이나 XML로 작성된 문서의 표시 방법을 기술하기 위한 스타일 시트 언어 이다.
✔ CSS는 요소가 화면, 종이, 음성이나 다른 매체 상에 어떻게 렌더링되어야 하는 지정한다.
✔ 주석
/* 주석 입니다 */
브라우저 기본 스타일 - 웹 브라우저에 웹 문서를 표시할 때 브라우저에서 기본적으로 사용하는 스타일
인라인 스타일 - style 속성을 사용해서 필요한 요소에 스타일 직접 지정
내부 스타일 시트 - 문서 앞부분에 문서에서 사용하는 스타일을 모아서 함께 정의하고 관리
외부 스타일 시트 - 문서에서 사용하는 스타일을 모아서 따로 파일로 저장한 후 연결해서 사용(link 태그 사용)
* {margin:0;}
p {font-style:italic;}
.bg {background-color:#ddd;}
#container {width:500px;}
h1, h2 {text-align:center;}
얼마나 중요한가?
사용자 스타일 -> 제작자 스타일 -> 브라우저 기본 스타일
적용 범위
!important -> 인라인 스타일 -> id 스타일 -> 클래스 스타일 -> 타입 스타일
소스 작성 순서
나중에 작성한 스타일이 먼저 작성한 스타일을 덮음
font-family - 글꼴 종류 지정
font-size - 글자 크기 지정
font-style - 글자를 이탤릭체로 표시할지 지정
font-weight - 글자의 굵기 지정
color - 글자색 지정
text-decoration - 텍스트에 밑줄이나 취소선을 표시할지 여부 지정
text-transform - 텍스트 전체 또는 첫 글자를 대문자로 표시
text-shadow - 텍스트에 그림자 추가
letter-spacing - 글자 사이의 간격을 지정
word-spacing - 단어 사이의 간격 지정
text-align - 텍스트 정렬 방법 지정
line-height - 줄 간격 조정
16진수 -빨, 초, 파 각각 두자리씩 총 여섯 자리의 16진수로 색상 표시
rgb(R,G,B) - 빨, 초, 파의 양을 0~255 숫자로 표현
rgba(R,G,B,a) - rgb 형식에 불투명도를 함께 표현
hsl(H,S,L) - 색상, 채도, 명도의 값으로 색상 표현
hsla(H,S,L,a) - hsl 형식에 불투명도를 함께 표현
색상이름 - red, yellow, black과 같은 색상 이름 사용
width - 박스 모델의 너비 지정
height - 박스 모델의 높이 지정
box-sizing - 박스 모델의 크기를 계산하는 기준을 지정
box-shadow - 박스 모델에 그림자 효과 추가
border-style - 상하좌우 4개 방향의 테두리 스타일을 한꺼번에 지정
border-위치-style - 위치 자리에(top,right,bottom,left)중에서 선택하여 특정 위치의 테두리 스타일만 지정
border-width - 상하좌우 4개 방향의 테두리 두께 한꺼번에 지정
border-위치-width - 특정 위치 자리에 테두리 두께 지정
border-color - 상하좌우 4개 방향의 테두리 색상을 한꺼번에 지정
border-위치-color - 특정 위치 자리에 테두리 색상 지정
border-radius - 상하좌우 4개 방향의 꼭짓점을 한꺼번에 둥글게 지정
border-위치-radius - 위치 자리에(top-left,top-right,bottom-right,bottom-left)등을 선택해 특정 꼭짓점만 둥글게 지정
contents - 텍스트와 이미지가 표시되는 상자
padding - 콘텐츠 주변 영역
border - padding과 contents를 둘러싸는 테두리
margin - 테두리 밖의 영역
margin - 상하좌우 4개 방향의 마진을 한꺼번에 지정
margin-위치 - 특정 위치 자리에 마진 지정
padding - 상하좌우 4개 방향의 패딩을 한꺼번에 지정
padding-위치 - 특정 위치 자리에 패딩 지정
display - 화면에서 요소를 배치하는 방법 지정
(block, inline, inline-block, none...)
float - 웹 요소를 왼쪽이나 오른쪽으로 배치
float를 적용한 요소는 clear 속성으로 해제 하지 않으면 뒤에 오는 요소도 계속 왼쪽이나 오른쪽으로 연결해서 배치
left, right, top, bottom - 기준 위치와 요소 사이에 상하좌우가 얼마나 떨어져 있는지 지정
position - 웹 요소의 위치 지정
(static, relative absolute, fixed)
background-color - 배경색 지정
background-clip - 배경색이나 이미지를 어디까지 적용할지 지정
background-image - 배경 이미지 지정
background-repeat - 배경 이미지의 반복 방법 지정
background-position - 배경 이미지의 위치 지정
background-origin - 배경 이미지를 배치할 기준 지정
background-attachment - 배경 이미지를 문서에 고정
background - 하나의 속성으로 배경 스타일을 한꺼번에 지정
background-size - 배경 이미지의 크기 조절
방향 - 끝 지점을 기준으로 to 다음에 방향을 나타내는 예약어를 최대 2개까지 사용(예약어: left,right,top,bottom)
각도 - 그라데이션이 끝나는 각도를 지정, 값은 deg로 표기
색상 중지점 - 쉼표로 색상을 구분하며, 색상만 지정하거나 색상과 중지점의 위치를 함께 지정
모양
* eclipse - 타원형의 그라데이션을 나타냄(기본값)
* circle - 원형의 그라데이션 나타냄
크기
* closet-side - 그라데이션 가장자리가 그라데이션 중심에서 가장 가까운 측면에 닿게함
* closet-corner - 그라데이션 가장자리가 그라데이션 중심에서 가장 가까운 꼭짓점에 닿게함
* farthest-side - 그라데이션 가장자리가 그라데이션 중심에서 가장 멀리 떨어진 측면에 닿게함
* farthest-corner - 그라데이션 가장자리가 그라데이션 중심에서 가장 멀리 떨어진 꼭짓점에 닿게함
위치 - at을 앞에 붙인 후 키워드나 백분율 사용
색상 중지점 - 쉼표로 색상을 구분하며, 색상만 지정하거나 색상과 중지점의 위치를 함께 지정
하위 선택자(상위요소 하위요소) - 상위요소에 포함된 모든 하위 요소를 선택
자식 선택자(부모요소>자식요소) - 부모 요소에 포함된 자식 요소만 선택
인접 형제 선택자(요소1+요소2) - 요소1 이후에 맨 먼저 오는 형제 요소 선택
형제 선택자(요소1~요소2) - 요소1과 형제인 모든 요소 선택
[required]
[target = _blank]
[class ~= button]
[title |= us]
[title ^= eng]
[title $= xis]
[href *=w3]
:link - 방문하지 않은 링크에 스타일을 적용
:visited - 방문했던 링크에 스타일을 적용
:hover - 지정한 요소에 마우스 포인터를 올려놓을 때 스타일을 적용
:active - 지정한 요소를 활성화했을 때 스타일을 적용
:focus - 지정한 요소에 초점이 맞춰졌을 때 스타일을 적용
:target - 앵커 대상에 스타일을 적용(a)
:enabled - 지정한 요소를 사용할 수 있는 상태일 때 스타일 적용
:disabled - 지정한 요소를 사용할 수 없는 상태일 때 스타일 적용
:checked - 선택한 요소의 스타일 적용
:not - 지정한 요소가 아닐 때 선택해서 스타일 적용
:only-child - 부모 안에 자식 요소가 하나뿐일 때 자식 요소 선택
A:only-child - 부모 안에 A요소가 하니뿐일 때 선택
:first-child - 부모 안에 있는 모든 요소 중에서 첫 번째 자식 요소 선택
:last-child - 부모 안에 있는 모든 요소 중에서 마지막 요소 선택
A:first-of-type - 부모 안에 있는 A요소 중에서 첫 번째 요소 선택
A:last-of-type - 부모 안에 있는 A요소 중에서 마지막 요소 선택
:nth-child(n) - 부모 안에 있는 모든 요소 중에서 n번째 자식 요소 선택
:nth-last-child(n) - 부모 안에 있는 모든 요소 중에서 끝에서 n번째 자식 요소 선택
A:nth-of-type(n) - 부모 안에 있는 A 요소 중에서 n번째 요소 선택
A:nth-last-of-type(n) - 부모 안에 있는 A 요소 중에서 끝에서 n번째 요소 선택
::first-line - 첫 번째 줄을 선택
::first-letter - 줄에서 첫 번째 글자 선택
::before - 특정 요소의 앞에 내용이나 스타일을 추가
::after - 특정 요소의 뒤에 내용이나 스타일을 추가
translate() - 요소 이동하기
✔ transform: translate(tx,ty) - 지정한 크기만큼 x축과 y축으로 이동
✔ transform: translate(tx,ty,tz) - 지정한 크기만큼 x축, y축, z축으로 이동
✔ transform: translateX(tx) - 지정한 크기만큼 x축으로 이동
✔ transform: translateY(ty) - 지정한 크기만큼 y축으로 이동
✔ transform: translateZ(tz) - 지정한 크기만큼 z축으로 이동
scale() - 요소 확대,축소 하기
✔ transform: scale(sx,sy) - 지정한 크기만큼 x축, y축으로 확대,축소
✔ transform: scale(sx,sy,sz) - 지정한 크기만큼 x축, y축, z축으로 확대,축소
✔ transform: scaleX(sx) - 지정한 크기만큼 x축으로 확대,축소
✔ transform: scaleY(sy) - 지정한 크기만큼 y축으로 확대,축소
✔ transform: scaleZ(sz) - 지정한 크기만큼 z축으로 확대,축소
rotate() - 요소 회전하기
✔ transform: rotate(각도) - 지정한 각도만큼 회전
✔ transform: rotateX(각도) - x축을 기준으로 지정한 각도만큼 회전
✔ transform: rotateY(각도) - y축을 기준으로 지정한 각도만큼 회전
✔ transform: rotateZ(각도) - z축을 기준으로 지정한 각도만큼 회전
✔ transform: rotate3d(rx,ry,rz,각도) - x축과 y축, z축을 기준으로 지정한 각도만큼 회전
skew() - 요소 비틀기
✔ transform: skew(ax,ay) - 지정한 각도만큼 x축과 y축으로 비틈
✔ transform: skewX(ax) - 지정한 각도만큼 x축으로 비틈
✔ transform: skewY(ay) - 지정한 각도만큼 y축으로 비틈
transition-property - 트랜지션의 적용 대상을 지정(기본값=all)
transition-duration - 트랜지션의 실행 시간 지정(단위=초, 기본값=0)
transition-timing-function - 트랜지션의 실행 형태를 지정
transition-delay - 트랜지션의 지연 시간을 지정(단위=초, 기본값=0)
transition - 위의 4가지 속성들을 한꺼번에 지정
@keyframes - 애니메이션이 바뀌는 지점 설정
animation-delay - 애니메이션의 시작 시간을 지정
animation-direction - 애니메이션을 종료한 뒤 처음부터 시작할지, 반대방향으로 진행할지 지정
animation-duration - 애니메이션의 실행 시간을 지정(단위=초)
animation-iteration-count - 애니메이션의 반복 횟수 지정
animation-name - @keyframes로 설정해 놓은 중간 상태를 지정
animation-timing-function - 키프레임의 전환 형태를 지정
animation - 위의 속성을 한꺼번에 묶어서 지정
width, height - 웹 페이지의 가로 너비 , 세로 높이
min-width, min-height - 웹 페이지의 최소 너비, 최소 높이
max-width, max-height - 웹 페이지의 최대 너비, 최대 높이
device-width, device-height - 단말기의 가로 너비, 세로 높이
min-device-width, min-device-height - 단말기의 최소 너비, 최소 높이
max-device-width, max-device-height - 단말기의 최대 너비, 최대 높이
orientation: portrait - 단말기의 세로 모드
orientation: landscape - 단말기의 가로 모드
display - 플렉스 컨테이너를 지정
(속성값=flex, inline-flex)
flext-direction - 플렉스 항목에서 주축과 방향을 지정
(속성값=row, row-reverse, column, column-reverse)
flex-wrap - 컨테이너 너비보다 항목이 많을 경우 줄 바꿈 여부를 지정
(속성값= nowrap, wrap, wrap-reverse)
flex-flow - 배치 방향과 줄 바꿈을 한 번에 지정
(속성값=felx-direction, flex-wrap)
justify-content - 주축에서 플렉스 항목 정렬 방법을 지정
(속성값=flex-start, flex-end, center, space-between, space-around)
align-items - 교차축에서 플렉스 항목 정렬 방법을 지정
(속성값=flex-start, flex-end, center, baseline, stretch)
align-self - 특정 플렉스 항목의 정렬 방법을 지정
(속성값=flex-start, flex-end, center, baseline, stretch)
align-content - 여러 줄일 때 교차축 정렬 방법을 지정'
(속성값=flex-start, flex-end, center, space-between, space-around, stretch)
flex - 플렉스 항목의 너비를 줄이거나 늘림
(속성값=1개에서 3개까지의 값, auto, initial)
diplay - 그리드 컨테이너를 지정(속성값=grid, inline-grid)
grid-template-columns - 열을 지정(속성값=크깃값)
grid-template-rows - 행(줄) 높이를 지정(속성값=크깃값)
grid-column-gap - 열과 열사이의 간격 지정(속성값=크깃값)
grid-row-gap - 행과 행사이의 간격 지정(속성값=크깃값)
grid-gap - 행과 열의 간격을 한꺼번에 지정(속성값=크깃값)
grid-column-start - 열 시작의 라인번호 지정(속성값=숫자)
grid-column-end - 열 마지막의 라인번호 지정(속성값=숫자)
grid-column - 열 시작과 끝 번호 사이에 슬래시(/)를 넣어 사용(속성값=숫자)
grid-row-start - 행 시작의 라인번호 지정(속성값=숫자)
grid-row-end - 행 마지막의 라인번호 지정(속성값=숫자)
grid-row - 행 시작과 끝 번호 사이에 슬래시(/)를 넣어 사용(속성값=숫자)
grid-area - 템플릿 이름을 지정
grid-templates-areas - grid-area를 사용해 템플릿 그리드 만듦
minmax() - 최솟값과 최댓값을 지정하는 함수(속성값=크기값, auto)
repeat() - 같은 값을 여러번 반복할 때 사용하는 함수(속성값=크기값, auto-fill, auto-fit)
HTML과 CSS에서 사용하는 개념들을 정리해 보았다.
이제 JavaScript에 집중해서 공부하고 간단하게 실습을 진행해보자