css는 화면을 꾸며주는 것이므로,
code가 화면에 어떻게 그려질지 상상하는 것이 중요하다.
reset. css
브라우저의 기본적인 세팅을 초기화하고 css해야한다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Overwatch</title>
👉 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reset-css@5.0.1/reset.main.css" />
(*title밑에 붙여넣기)
<link rel="stylesheet" href="./main.css" />
(그 밑에는 파일 연결하는 순서이다.)
px
픽셀
기본 font 크기: 16px 이다.
%
상대적 백분율
부모요소에 영향을 받아 자식요소는 부모 요소 값의 %로 나타난다.
em
요소의 글꼴 크기
글꼴마다 크기가 상대적이다.
❓❓❓❓❓
글꼴의 크기인데 왜 font-size에다가 적용하지 않고(예시 font-size: 20em;)
width값에 적용시키나???
(rem도 마찬가지)
rem
루트요소(html)의 글꼴 크기
루트요소: 최상위 요소(html)
vw
뷰포트 가로너비의 백분율
뷰포트: 브라우저 화면에 표시되는 페이지의 전체 영역
예시)
50vw;는 화면의 가로비율을 줄이면 줄인만큼의 50%가 줄어든다.
왔다갔다 줄였다가 늘리면 계속 화면의 50%만큼 줄었다가 늘어나며 유동적으로 변한다.
vh
뷰포트 세로 너비의 백분율
가로와 세로의 너비
auto (기본값)
선택자에 따라 달라지는 자동 계산 예시)
span은 인라인 요소로 딱! 콘텐츠의 크기 만큼만 나타난다.
(크기가 콘텐츠 크기만큼 줄어듬)
(가로: 줄어듬 / 세로: 줄어듬)
div는 블록 요소이므로 가로사이즈가 최대로 늘어난다.
(가로: 늘어남 / 세로: 콘텐츠 크기만큼 줄어듬)
단위
div {
width: 100px;
}
해석👉 div에 스타일을 적용시켜주며, {가로는: 100px이다;}
(세로는 입력하지 않았으므로 자동계산되어 나타난다. = height: auto;)
커질 수 있는 최대 가로/세로 너비
none (기본값)
단위
작아질 수 있는 최소 가로/세로 너비
0
단위
요소의 외부 여백(공간)을 지정하는 단축 속성💡
-음수를 사용할 수 있다. -
-음수를 사용할 경우 요소가 겹쳐지게 될 수도 있다.
-단축속성으로 상하좌우 값을 모두 다르게 입력가능하다.
0 (기본값)
auto
단위
💡 아래의 특징이 다른 단축속성에도 동일하게 적용된다.
( 단축 속성일 경우에만 적용가능 )
📍 top, right, bottom, left
: 위, 오른쪽, 아래, 왼쪽의 모든 방향에 외부여백을 줄 수 있다.
1. margin뒤에 방향을 입력하여 외부여백을 주기
2. margin 값을 방향 순서대로 입력하여 외부여백 주기
-꼭 순서를 지켜서 값을 입력해야 한다.
-순서는 시계방향 순서이다.
-값은 최대 4개까지 입력가능하다.
모든 방향: 값을 하나만 입력
예) margin: 10px;
상하, 좌우: 순서대로 2개의 값 입력
예) margin: 10px 20px;
👉margin: 10px(상하여백) 20px(좌우여백);
상, 중, 하: 순서대로 3개의 값 입력
예) margin: 10px 20px 30px;
👉margin: 10px(위) 20px(좌우) 30px(아래);
상하좌우값이 모두 다른 여백일 때는 시계방향 순서대로 입력
예) margin: 10px 20px 30px 40px;
👉margin: 10px(위) 20px(오른쪽) 30px(아래) 40px(왼쪽);
요소의 내부 여백(공간)을 지정하는 단축 속성💡
-내부에 여백이 생기면서 요소의 크기가 커진다.
(요소+내부여백 = 커짐)
-단축속성으로 상하좌우 값을 모두 다르게 입력가능하다.
0 (기본값)
단위
%
요소의 테두리 선을 지정하는 단축 속성💡
-요소의 크기가 커진다.
(요소+테두리 = 커짐)
💡 단축 속성
border: 선두께 선종류 선색상;
위의 순서대로 입력하는 것을 권장한다.
(기본값) border: medium none black;
borser-width 선 두께단위 : px, em, %등 단위로 지정한다.
단축속성으로 시계방향대로 값을 입력하면 상,우,하,좌의 두께를 입력할 수 있다.
예) border-width: 10px 20px 30px 40px;
border-style 선 종류none: (기본값) 선 없음
soild: 실선 (일반 선)
dashed: 파선(끊어진 선/점선이 길게된 선)
등이 있지만, 그 외는 잘 사용되지 않는다.
dotted: 점선(점으로 된 선)
단위속성으로 상하좌우에 모두 다른 스타일을 적용할 수 있다.
border-color 선 색상👉 색상표현
색상이름
브라우저 제공 색상 이름
red, tomato, royalblue
16진수 색상
Hex 색상코드
#000, #FFFFF
RGB
빛의 삼원색
rgb(0,0,0,0.5)
RGBA
빛의 삼원색 + 투명도
투명도: 0~1 (0: 투명 / 1: 불투명)
rgba(0,0,0,0.5)
등 으로 색상을 표현한다.
border-방향 / border-방향-속성요소의 모서리를 둥글게 깎는다.
특정한 모서리만 깎이게도 할 수 있다.
❔ 어떻게 둥글게 깎을까?
1. 모서리에 원을 둔다.
2. 원의 반지름만큼 둥글게 깎인다.
0 (기본값)
둥글게 깎지 않는다.
단위
px, em, ve등의 단위로 지정한다.
특정 모서리만 깎기
시계방향대로 모서리 순서를 지정한다.
border-radius: 0 10px 0 0;
크기 계산 기준을 지정한다.
padding(내부여백), border(테두리)로 인한 크기 변화를
안일어나게 할 수 있다.
예) box-sizing: border-box;
content-box (기본값)
border-box
요소의 크기 이상으로 내용이 넘쳤을때, 보여짐을 제어하는 단축속성💡
부모요소에 작성하면,
자식요소에 잘린 요소를 숨겨준다.
visible (기본값)
넘친 내용을 그대로 보여줌
hidden
넘친 내용을 숨김
auto
넘친 내용이 있는 경우에만 잘라내고 그 부분만 스크롤바 형성
(scroll을 이용하면 x,y축 모두 스크롤바가 형성된다. - 잘사용X)
💡 개별 속성
overflow-x
x축으로 넘치는 부분만 숨긴다.
overflow-y
y축으로 넘치는 부분만 숨긴다.
화면 출력(보여짐) 특성
📍 <각 요소에 이미 지정되어 있는 값들>
block
상자(레이아웃) 요소
예) div
inline
글자요소
예) span
inline-block
글자 + 상자 요소
기타
table, table-row, table-cell 등
🔻 사용 예시
[CSS]
span {
width: 120px;
height: 30px;
background-color: yellow;
}
👉span은 인라인 요소이므로, 가로/세로 넓이를 지정할 수 없다.
이때, 블록 요소로 변경하고 싶으면 display를 이용하면 된다. (아래 예시처럼)
span {
display: block;
width: 120px;
height: 30px;
background-color: yellow;
}
👉display: block; (화면에: 블록요소로 보여지게한다.;)의 css를 넣어줌으로써
가로/세로의 값을 가질 수 있게 된다.
📍 <따로 지정해야 하는 값들>
flex
플렉스 박스 (1차원 레이아웃)
grid
그리드 (2차원 레이아웃)
none
보여짐 특성 없음
= 화면에서 안보임
flex는 1차원 레이아웃을 말한다.
차원: x, y축
display: flex;를 적용하면, Flex Container가 되고,
display: flex;가 적용된 요소를 말한다. (또는 line-flex)
display: flex;display: inline-flex;인라인 요소처럼 적용된다.
주 축을 설정한다. (수평과 수직 정렬)
💡 Flex Container에 사용되는 속성
row (기본값)
row-reverse
column (block 요소가 수직정렬이므로 잘 쓰이지X)
주 축의 정렬 방법 (수평)
💡 Flex Container에 사용되는 속성
flex-start (기본값)
flex-end
center
교차 축의 여러 줄 정렬 방법 (수직)
💡 Flex Container에 사용되는 속성
stretch (기본값)
flex-start
flex-end
center
교차 축의 한 줄 정렬 방법 (수직)
💡 Flex Container에 사용되는 속성
stretch (기본값)
flex-start
flex-end
center
flex items 묶음(줄바꿈) 여부
💡 Flex items에 사용되는 속성
nowrap상태로 냅두면 flex로 수평정렬을 하였다가 해당되는 공간안에 요소들이
수평으로 정렬이 안될 경우
요소들이 찌부되어 표현이 된다.
이러한 현상을 원치 않을 경우 wrap으로 요소들을 내려(줄바꿈)줄 수 있다.
nowrap (기본값)
wrap
flex items의 순서
💡 Flex items에 사용되는 속성
0 (기본값)
순서없음
숫자
숫자가 작을 수록 먼저 온다.
flex items의 증가 너비 비율
💡 Flex items에 사용되는 속성
0 (기본값)
증가 비율 없음
숫자
증가 비율
flex items의 감소 너비 비율
💡 Flex items에 사용되는 속성
1 (기본값)
flex container 너비에 따라 감소 비율 적용
숫자
감소 비율
flex items의 공간 배분 전 기본 너비
💡 Flex items에 사용되는 속성
auto (기본값)
요소의 content 너비
단위
px, em, rem등 단위로 지정
투명도
1
불투명
0~1
0부터 1사이의 소수점 숫자
이때 소수점 앞에 있는 0은 생략가능하다.
0
투명
opacity: 0.07;
👉7%
opacity: 0.5;
👉50%
opacity: 0.7;
👉70%
opacity: 1;
👉100% (불투명)
글자의 기울기
normal (기본값)
기울기 없음
italic
이텔릭체
글자의 두께(가중치)
nomail 400 (기본값)
기본 두께
bold 700
두껍게
100~900
100단위의 숫자 9개,
normal과 bold 이외 두께
글자의 크기
16px (기본값)
기본 크기
단위
px, em, rem 등 단위로 지정
한 줄의 높이 (행간과 유사)
normal (기본값)
단위가 있지 않다.
숫자
-요소의 글꼴 크기의 배수로 지정
(폰트 사이즈의 Xn배)
-폰트 사이즈가 달라져도 한 줄의 높이가 높아진다.
-%보다 숫자 사용을 권장
단위
px, em, rem 등 단위로 지정
글꼴(서체) 지정
font-family: 글꼴1, "글 꼴2", ... 글꼴계열;
👉 글꼴을 여러개 작성하는 이유
📍 글꼴 계열
serif
바탕체 계열
(뻗침이 있는 글꼴)
san-serif
고딕체 계열
(깔끔한 글꼴)
monospace
고정너비 글꼴 계열
(가로폭이 동등)
...등
별 의미 없는 긴 문장이 필요할 경우
(https://www.lipsum.com)으로 접속하면 작성된 문장을 사용가능하다.
글자의 색상
rgb(0,0,0) (기본값)
검정색
색상
기타 지정가능한 색상
문자의 정렬방식
left (기본값)
왼쪽 정렬
right
오른쪽 정렬
center
가운데 정렬
문자의 선(장식)
none (기본값)
장식 없음
underline
밑줄
line-through
중앙 선
문자의 첫 줄을 들여쓰기
음수를 사용하여
반대로 내어쓰기(outdent)를 쓸 수 있다.
0 (기본값)
들여쓰기 없음
단위
px, em, rem 등 단위로 지정한다.
배경 색상
transparent (기본값)
투명함
색상
지정 가능한 색상
배경 이미지 삽입
none (기본값)
이미지 없음
url
이미지 경로
사용 예) background-image: url("경로 입력")
배경 이미지 반복
repeat (기본값)
이미지를 수직, 수평으로 반복
no-repeat
반복 없음
repeat-x
이미지를 수평으로만 반복
repeat-y
이미지를 수직으로만 반복
배경 위치
방향
background-position: top right;
해석👉 배경 이미지의 위치는: 위, 오른쪽에 위치한다.;
(right와 top의 순서를 바꿔도 상관없다.)
단위
background-position: 100px 30px;
해석👉 배경 이미지의 위치는: x축에서 100px떨어져 있고, y에서 30px 떨어진 곳에 위치한다.;
(x축 100px = 오른쪽으로 100px이동
y축 30px = 아래로 30px이동)
배경 이미지 크기
auto (기본값)
이미지의 실제 크기
단위
px, em,rem 등 단위로 지정
cover
비율을 유지하고,
이미지의 더 넓은 너비에 맞춘다.
cintain
비율을 유지하고,
이미지의 더 짧은 너비에 맞춘다.
배경이미지 스크롤 특성
scroll (기본값)
이미지가 화면을 따라서 같이 스크롤
fixed
이미지가 뷰포트에 고정된다.
(스크롤X)
위치 지정 기준을 잡아준다.
position과 함께 사용되는 속성들
👉 top, bottom, left, right, z-index
🔻 사용 예시
position: relative;
top: 100px;
right: -30px;
static (기본값)
기준없음
relative
자기(요소) 자신을 기준으로 배치된다.
absolute
위치 상 부모요소를 기준으로 배치된다.
fixed
뷰포트(브라우저)를 기준으로 배치된다.
🔻 예시
(absolute값을 써도 뷰포트가 기준이 되는 경우)
.container {
width: 300px;
background-color: royalblue;
}
.container .item {
background-color: orange;
}
.container .item:nth-child(1) {
width: 100px;
height: 100px;
}
.container .item:nth-child(2) {
width: 140px;
height: 70px;
position: absolut;
bottom: 30px;
}
해석👉 위치상 부모요소(position: relative;)를 부여해주지 않아서,
부모요소가 없으므로,
position: absolut;를 부여해준 2번째 요소는
뷰포트를 기준으로 배치된다.
🔻 예시
(relative로 부모요소를 부여해준 경우)
.container {
width: 300px;
background-color: royalblue;
position: relative;
}
.container .item {
background-color: orange;
}
.container .item:nth-child(1) {
width: 100px;
height: 100px;
}
.container .item:nth-child(2) {
width: 140px;
height: 70px;
position: absolut;
bottom: 30px;
}
해석👉 .container에 relative를 부여하여 부모요소를 만들어주었다.
2번째 요소는 .container를 기준으로 위치가 이동한다.
어떤 요소가 사용자와 더 가깝게 있는지(위에 쌓이는지) 결정
💡 위에 쌓이는 순서
1. 요소에 position 속성의 값이 있는 경우 위에 쌓인다. (기본값인 static 제외)
👉 position 속성과 값 : position: relative; position: absolute; position: fixed;
2. 1번 조건이 같은 경우, z-index 속성의 숫자 값이 높을 수록 위에 쌓인다.
3. 1번과 2번 조건까지 같은 경우, HTML의 구조가 나중에 작성 될 수록 위에 쌓인다.
요약
1. position 속성 값
2. z-index
3. HTML 구조
🔻 예시1
[CSS]
.container .item:nth-child(1) {
position: relative;
}
.container .item:nth-child(2) {
position: absolute;
}
해석👉 이경우, 1번째와 2번째 모두 position 값이 부여가 되었으므로,
[💡 위에 쌓이는 순서]의 1번은 동일하다,
그리고 x-index가 없으므로 2번도 동일,
HTML의 구조상 2번째가 나중에 작성이 되었으므로,
결국 2번째가 가장 위에 쌓인다.
🔻 예시2
.container .item:nth-child(1) {
position: relative;
z-index: 1;
}
.container .item:nth-child(2) {
position: absolute;
}
.container .item:nth-child(3) {
z-index: 2;
}
해석👉 3번째는 position이 부여되지 않았으므로, 가장 마지막이며
1과 2는 position이 모두 있으므로 동일,
1에서 z-index가 쓰였으므로
1번 -> 2번 -> 3번 순서로 쌓인다.
📍 z-index
요소의 쌓임 정도를 지정한다.
auto (기본값)
= 0
부모 요소와 동일한 쌓임 정도
숫자
position 속성의 값으로 absolute, fixed가 지정된 요소는 (relative는 제외)
자동으로 display가 블록으로 변경된다.
요소의 전환(시작과 끝) 효과를 지정하는 단축 속성
transition: 속성명 지속시간 타이밍함수 대기시간;
*지속시간은 단축형으로 작성 할 때, 필수 포함 속성이다!
transform: 변환함수1 변환함수2 변환함수3 ...;
transform: 원근법 이동 크기 회전 기울임;
전환 효과를 사용할 속성 이름을 지정
all (기본값)
모든 속성에 적용
속성이름
전환 효과를 사용할 속성 이름 명시
전환 효과의 지속시간을 지정
0s (기본값)
전환 효과 없음
시간
지속시간(s)을 지정
예를 들어 가로길이의 전환은 0.5s로 전환하고
색의 전환은 5s로 전환 하고 싶을 경우 , 를 사용한다.
(transition부분 참고)
[css]
div {
width: 100px;
height: 100px;
background-color: orange;
transition:
width ,5s,
background-color: 2s;
}
div:active {
width: 3000px;
background-color: royalblue;
전환 효과의 타이밍 함수을 지정
ease (기본값)
느리게 - 빠르게 - 느리게
cubic-bezier(0.25,0.1,0.25,1)
linear
일정하게
cubic-bezier(0,0,1,1)
ease-in
느리게 - 빠르게
ease-out
빠르게 - 느리게
ease-in-out
느리게 - 빠르게 - 느리게
*구글에 (easing funtions)검색해보고 easing 함수 치트 시트에서 움직임 확인 가능,
(easing funtions mdn)검색하면 css에 적용시킬 수 있는 정보가 나온다.
(tweenmax easing) 검색하면 easing함수를 시각적으로 다루는 페이지를 이용할 수 있다.
전환 효과가 몇 초뒤에 시작할 지 대기 시간을 지정
0s (기본값)
대기시간 없음
시간
대기시간(s)을 지정
transition에 숫자가 동시에 있을 경우 첫번째가 지속시간 두번째가 대기시간이다
ex) transition: 1s .5s
(지속시간: 1초 / 대기시간 0.5초)
perspective 원근법 함수는 제일 앞에 작성되어져야 한다.
translate(x,y) 이동 (x축, y축)
translateX(x) 이동 (x축)
translateY(y) 이동 (y축)
scale(x,y) 크기 (x축, y축)
rotate(degree) 회전 (각도)
skewX(x) 기울임 (x축)
skewY(y) 기울임 (y축)
perspective 원근법 함수는 제일 앞에 작성되어져야 한다.
perspective(n) 원근법 (거리)
rotateX(x) 회전 (x축)
rotateY(y) 회전 (y축)
하위 요소를 관찰하는 원근 거리를 지정
함수의 perspective와는 달리 속성 요소이며, 부모 요소에 위치를 지정한다.
요소에 넣는 함수 사용보다는
부모 요소에 넣는 속성요소를 사용해 주는 것을 권장한다.
함수의 perspective 사용법
transfrom: perspective(500px) rotareY(45deg);
속성의 perspective 사용법
perspective: 500px;
단위
px등 단위로 지정
3D 변환으로 회전된 요소의 뒷면 숨김 여부
visible (기본값)
뒷면 보임
hidden
뒷면 숨김
뒷면을 숨긴 요소는 화면에 보이지 않는다.