css를 통해서 html을 제어할 수 있는 항목들
- 박스 모델
- 글꼴, 문자
- 배경
- 배치
- 플렉스(정렬)
- 전환
- 변환
- 띄움
- 애니메이션
- 그리드
- 다단
- 필터
> 박스모델
인라인 요소 : 가로 넓이가 최대한 줄어들고 가로와 세로 사이즈를 지정할 수 없다.
블록 요소 : 가로 넓이가 최대한 늘어나고 가로와 세로 사이즈를 지정 가능하다.
ex) span (의미X 콘텐츠 영역을 설정하는 용도) -> 인라인 요소 (단위지정X)
div -> 블록 요소 (단위지정O)
width / height
요소의 가로/세로 너비
auto : (기본값:요소에 이미 들어있는 속성의 값)브라우저가 너비를 알아서 계산
단위 : px, em, vw등 단위로 지정
max-width / max-height
요소가 커질 수 있는 최대 가로/세로 너비
none : 최대 너비 제한 없음
단위 : px, em, vw등 단위로 지정
min-width / min-height
요소가 작아질 수 있는 최소 가로/세로 너비
0 : 최소 너비 제한 없음
단위 : px, em, vw등 단위로 지정
css에서 사용할 수 있는 단위
- px : 픽셀
화면에 출력하는 점으로 된 단위(1920pxX1080px해상도)
- % : 상대적 백분율
몇 퍼센트의 크기를 가지는지 나타내는 단위
- em : 요소의 글꼴 크기
상대적인 크기
- rem : 루트 요소(html)의 글꼴 크기
루트=최상의 요소 -> html에서 지정한 크기만 사용
- vw : 뷰포트 가로 너비의 백분율
V=뷰포트=브라우저의 페이지영역 / W=width=가로 너비
- vh : 뷰포트 세로 너비의 백분율
외부 여백
margin : 외부 여백을 지정
요소의 외부 여백(공간)을 지정하는 단축 속성
음수를 사용할 수 있음 (-마이너스)
0 : 외부 여백 없음
auto : 브라우저가 여백을 계산 (가로/세로 너비가 있는 요소의 가운데 정렬에 활용함)
단위 : px,em, vw 등 단위로 지정
개별 속성 : 각각의 방향을 지정할 수 있음
- margin-top : 위쪽에만 여백을 지정
- margin-right : 오른쪽에만 여백을 지정
- margin-left : 왼쪽에만 여백을 지정
- margin-bottom : 아래쪽에만 여백을 지정
margin은 단위를 1개~4개까지 입력하여 각각의 방향을 지정할 수 있는 단축 속성이다.
- margin : 10px;
= 여백 : 위,아래,왼,오른쪽 모두 10px로 지정한다.
- margin : 10px 20px;
= 여백 : 위,아래는 10px, 왼,오른쪽은 20px로 지정한다.
- margin : 10px 20px 30px;
= 여백 : 위10px, 왼,오른쪽20px, 아래30px로 지정한다.
- margin : 10px 20px 30px 40px;
= 여백 : 위10px, 오른쪽20px, 아래30px, 왼쪽40px로 지정한다.
= 위에서부터 시계방향대로 돌아감
내부 여백
> padding : 내부 여백 지정 (요소의 크기가 커짐)
요소의 내부 여백(공간)을 지정하는 단축속성
0 : 내부 여백 없음
단위 : px, em, vw 등 단위로 지정
% : 부모 요소의 가로 너비에 대한 비율로 지정
단축 속성/개별속성으로 margin과 동일하게 4개의 방향을 각각 지정할 수 있다.
테두리 선과 색상표현
> border : 요소의 테두리 선을 지정하는 단축 속성 (요소의 크기가 커짐)
개별 속성 : 두께(border-width), 종류(border-style), 색상(border-color)을 모두 입력해야지 테두리가 생겨남
1.두께 2.종류 3.색상 순서로 입력하기
두께 단위 : px, em, % 등
종류 : solid(실선) 등...
border-width
: 단축속성으로 1~4개의 숫자를 입력하여 각 방향에 대한 두께를 지정할 수 있다.
border-style
: 요소 테두리 선의 종류 / 단축속성
- none : 선 없음
- solid : 실선 (일반 선)
- dotted : 점선
- dashed : 파선
등등
boder-color
: 요소 테두리 선의 색상을 지정 / 단축속성
- black : (기본값)검정색
- 색상 : 선의 색상
- transparent : 투명
border-방향 / border-방향-속성
: 요소의 테두리 선을 지정하는 기타 속성들
ex)
- border-top: 두께 종류 색상;
- border-top-width: 두께;
- border-top-style: 종류;
- border-top-color: 색상;
색상표현
: 색을 사용하는 모든 속성에 적용 가능한 색상 표현
- 색상 이름 : 브라우저에서 제공하는 색상이름
ex) red, tomato, royalblue 등
- Hex 색상코드 : 16진수 색상 (주로사용)
ex) #000, #FFFFFF
- RGB : 빛의 삼원색
ex) rgb(255,255,255)
- RGBA : 빛의 삼원색 + 투명도
ex) rgba(0,0,0,0.5) : 빛의삼원색+투명도(0.몇)으로 지정
등등
크기 계산
box-sizing
: 요소의 크기 계산 기준을 지정
- content-box : (기본값) 요소의 내용(conrtent)으로 크기 계산
- border-box : 요소의 내용 + padding + border로 크기 계산
ex) box-sizing: border-box;
= 요소에 지정한 크기로 내부 여백, 테두리 등을 설정하여 크기가 늘어나지 않음
넘침 제어 (크기가 벗어난 곳을 자름)
overflow
: 요소의 크기 이상으로 내용이 넘쳤을 때, 보여짐을 제어하는 단축 속성
- visible : (기본값) 넘친 내용을 그대로 보여줌
- hidden : 넘친 내용을 잘라냄
- auto : 넘친 내용이 있는 경우에만 잘라내고 스크롤 바 생성
- scroll : 스크롤 바 생성 (x,y축 모두)
사용법 ex)
overflow: hidden;
= 요소의 크기가 벗어난 것을 숨긴다.
overflow: auto;
= 요소의 크기가 벗어난 범위만 잘라내고 스크롤바 생성 (x또는y축)
개별속성
overflow-x : x축으로 넘치는 부분만 잘라냄
overflow-y : y축으로 넘치는 부분만 잘라냄
출력 특성
display
: 요소의 화면출력(보여짐) 특성
- block (기본값) : 상자(레이아웃)요소
- inline (기본값) : 글자 요소
- inline-block (기본값) : 글자 + 상자 요소
- flex : 플렉스 박스 (1차원 레이아웃)
- grid : 그리드 (2차원 레이아웃)
- none : 보여짐 특성 없음, 화면에서 사라짐
- 기타 (기본값) : table, table-row, table-cell 등...
사용법 ex)
- display: block;
= 화면에서 출력되는 인라인 요소(=글자)를 block요소로 바꾸어준다. -> 가로/세로 너비를 지정가능해진다.
- display: none;
= 화면에서 출력되는 요소들을 안보이게 숨겨준다.
투명도
opacit
: 요소의 투명도
- 1: (기본값) 불투명
- 0~1 : 0부터 1사이의 소수점 숫자로 투명도 조절
사용법 ex)
- opacity: 0.07; -> 투명도가 7%로 가장 투명함 (예시안에서 상대적으로 가장 투명함)
- opacity: 0.4; -> 투명도가 40%로 중간 정도 투명함
- opacity: 0.7; -> 투명도가 70%로 가장 불투명함
- opacity: 1; -> 불투명 함
글꼴
기본값은 16px로 지정되어져있다.
font-style
: 글자의 기울기
- normal : 기울기 없음
- italic : 이텔릭체 (기울어진 글자/oblique보다는 이텔릭체를 주로 사용)
- oblique : 기울어진 글자
font-weight
: 글자의 두께(가중치)
- normal,400 : (기본값) 기본 두께
- bold,700 : 두껍게
- 100~900 : 100단위의 숫자9개, normal과 bold 이외 두께
font-size
: 글자의 크기
- 16px : (기본값) 기본 크기
- 단위 : px,em, rem 등 단위로 지정
등등
line-height
: 한 줄의 높이, 행간과 유사
- normal : (기본값) 브라우저의 기본 정의를 사용
- 숫자 : 요소의 글꼴 크기의 배수로 지정
- 단위 : px, em, rem 등의 단위로 지정
사용법 ex)
-
font-size: 16px;
line-height: 32px;
= 글씨-사이즈 는 16px크기이며,
줄의 높이는 32px크기이다.
-
line-heght: 2; (단위가 적혀있지 않는 경우)
= 줄의 높이는 폰트사이즈의 2배이다.
-
line-height: 200%;
= 줄의 높이는 폰트사이즈의 2배이다.
! 이때 줄 높이를 단위를 입력한 px를 사용하기 보다는 폰트 글씨의 배수로 적용시켜서
폰트를 바꾸면 줄 간격도 동일한 배수로 바뀔 수 있도록 설정하는 것이 좋다 !
font-famliy: 글꼴1, "글꼴2", 글꼴계열;
: 글꼴(서체) 지정
띄어쓰기 등 특수문자가 포함된 글꼴 이름은 큰 따옴표로 묶어야한다.
후보1, 후보2, ... 글꼴계열; 작성
제일 앞에 있는 글꼴을 사용하고자 하며 글꼴이 지원이 안될 시 후보2를 적용시킴 후보3,4,5...등 계속 후보를 둘 수 있다. 모두 쓸수 없다면 마지막 글꼴 계열을 사용하게 된다.
그리고 마지막에 글꼴계열;을 필수적으로 입력해주어야한다.
- serif : 바탕체 계열 (뻣침?이 있는 글꼴)
- sans-serif : 고딕체 계열 (깔끔한 글꼴)
- monospace : 고정너비(가로폭이 동등) 글꼴 계열
- cursive : 필기체 계열
- fantasy : 장식 글꼴 계열 (꾸밈이 많은 글꼴)
문자
color
: 글자의 색상
- rgb(0,0,0) : (기본값)검정색
- 색상 : 기타 지정 가능한 색상
! font-color 또는 text-color라고 앞에 키워드를 붙이지 않는다 !
text-align
: 문자의 정렬 방식
- left : (기본값) 왼쪽정렬
- right : 오른쪽 정렬
- center : 가운데 정렬
- justify : 양쪽 정렬
text-decoration
: 문자의 장식(선)
- none : (기본값) 장식없음
- underline : 밑줄
- line-through : 중앙선
! a태그는 예외로 기본 속성으로 밑줄이 쳐져서 화면에 출력된다 !
text-indent
: 문자 첫 줄의 들여쓰기 (띄어짐)
- 0 : (기본값) 들여쓰기 없음
- 단위 : px,em, rem 등 단위로 지정
- 음수를 사용가능하다. (=내어쓰기outdent이다.)
배경
background-color
: 요소의 배경 색상
- transparent : (기본값)투명함
- 색상 : 지정 가능한 색상
background-image
: 요소의 배경 이미지 삽입 / 바둑판식 배열
- none : (기본값) 이미지 없음
- url("경로"); : 이미지 경로
ex) background-image: url("경로");
background-repeat
: 요소의 배경 이미지 반복 / 바둑판식 배열이 기본값으로 출력됨
- repeat : (기본값) 이미지를 수직, 수평 반복
- repeat-x : 이미지를 x축으로 수평 반복
- repeat-y : 이미지를 y축으로 수직 반복
- no-repeat : 반복 없음
background-position
: 요소의 배경 이미지 위치
- 방향 : top, bottom, left, right, center 방향
- 단위 : px, em, rem 등 단위로 지정 (x,y축으로 값이 적용됨)
ex) background-position: top right;
= 배경의 위치 는 위에서 오른쪽에 위치한다. (위,오른쪽의 순서가 바껴도 상관없음)
background-position: 100px 30px;
= 배경의 위치는 x축으로 100px, y축으로 30px에 위치한다. (y축은 위가 아닌 아래로 내려감)
background-size
사용법 ex) background-size: cover;
: 요소의 배경 이미지 크기
- auto : (기본값) 이미지의 실제 크기
- 단위 : px, em, rem 등 단위로 지정
- cover : 비율을 유지, 요소의 더 넓은 너비에 맞춤
- contain : 비율을 유지, 요소의 더 짧은 너비에 맞춤
background-attachment
사용법 ex) background-attachment: fixed;
: 요소의 배경 이미지 스크롤 특성
- scroll : (기본값) 이미지가 요소를 따라서 같이 스크롤
- fixed : 이미지가 뷰포트에 고정, 이미지가 스크롤되지 않음
- local : 요소 내 스크롤 시 이미지가 같이 스크롤
배치
position
- static : (기본값) 기준없음
- relative : 요소 자신을 기준
- absolute : 위치상 부모 요소를 기준
- fixed : 뷰포트(브라우저)를 기준
position과 같이 사용하는 css속성들은 모두 음수를 사용할 수 있으며
top, bottom, left, right, z-index가 있다.
ex)
position: relative;
top: 00px;
left: 00px;
위치는 요소 자신을 기준으로 위로 00px만큼, 왼쪽에서 00px만큼 이동시킨다.
이때 옮겨져서 비워진 자리는 시각적으로만 비워져 있게된다. (비정상적인 출력이 되므로 주로 사용하지 않는다.)
position: absolute;
absolute를 지정해주면 기존에 1,2,3순서대로 쌓여있던 요소들이 부모요소를 다시 만들게 되어 기존 순서는 무너진다.
부모에 absolute나 relative를 지정해주고 위치 배치값은 그 자식에게 주어야 그 안에서 배치가 된다.
모든 부모요소에 position: static;을 입력시키면 뷰포트를 기준으로 배치가 된다.
position: fixed;
뷰포트에 고정되어 스크롤을 하여도 사라지지 않고 그 자리에 유지되어 보여진다.
z-index
요소의 쌓임 정도를 지정
- auto: 부모 요소와 동일한 쌓임 정도 (=0)
- 숫자: 숫자가 높을 수록 위에 쌓임
- z-index를 사용하더라도 position에 값을 지정하지 않으면 우선되어 쌓이지 않는다.
플렉스(정렬)
display: flex;
수평정렬을 시켜준다.
블록 요소와 같이 flex Xontainer 정의이다.
display: inline-flex;
인라인 요소와 같이 Flex Container 정의이다.
flex-direction
주 축을 설정
- row: 행 축 (좌->우) 수평을 의미
- row-reverse: 행 축 (우->좌)
- column: 열. 수직을 의미(위->아래)
- column-reverse: 열. 수직을 의미(아래->위)
- main-axis: 주 축. 시작점과 끝점이 있다.(flex-start와 flex-end)
- cross-axis: 교차 축. 열과 행을 설정한 것과 반대되는 축
ex)
display: flex;
flex-direction: row;
수평적으로(좌->우) 정렬이 되어진다.
dispaly: flex;
flex-direction: row-reverse;
수평적으로(우->좌) 정렬이 되어진다.
flex-wrap
flex items의 묶음(줄바꿈) 여부
- nowrap: (기본값) 줄바꿈 없음
- wrap: 여러 줄로 묶음 (줄바꿈)
justify-content
주 축의 정렬방법 (플렉스는 기본적으로 수평정렬이다.)
- flex-start: flex items를 시작점으로 정렬
- flex-end: flex items를 끝점으로 정렬
- center: flex ltems를 가운데 정렬
align-content
교차 축의 여러 줄 정렬 방법 (수직)
- stretch: (기본값) flex items를 시작점으로 정렬
- flex-start: flex items를 시작점으로 정렬
- flex-end: flex items를 끝점으로 정렬
- center: flex items를 가운데 정렬
align-items
교차 축의 한줄 정렬방법
- stretch: flex items를 교차 축으로 늘림
- flex-start: flex items를 각 줄의 시작점으로 정렬
- flex-end: flex items를 각 줄의 끝점으로 정렬
- center: flex items를 각 줄의 가운데 정렬
flex item
order
flex item의 순서
- 0: 순서없음
- 숫자: 숫자가 작을 수록 먼저 정렬이된다.
flex-grow
flex item의 증가 너비 비율
flex-shrink
flex item의 감소 너비 비율
- 1: (기본값) flex Conrainer 너비에 따라 감소 비율 적용
- 숫자: 감소 비율
flex-basis
flex item의 공간 배분 전 기본 너비
- auto: 요소의 content 너비
- 단위: px, em, rem 등 단위로 지정
전환
taransition: 속성명 지속시간 타이밍함수 대기시간;
요소의 전환(시작과 끝)효과를 지정하는 단축 속성
이 4가지를(속성명 지속시간 타이밍함수 대기시간;) 띄어쓰기를 통해 연속적으로 사용가능하다.
transition-property
전환 효과를 사용할 속성 이름을 지정
- all: (기본값) 모든 속성에 적용
- 속성이름: 전환 효과를 사용할 속성 이름 명시
transition-duration
: 지속시간 (단축형으로 작성할 때, 필수 포함속성)
- 0s: (기본값) 전환효과 없음
- 시간: 지속시간(s)을 지정 (소수점은 앞에 0은 생략가능 ex) 0.5s -> .5s)
transition-timing-function
: 전환 효과의 타이밍(easing)함수를 지정
- ease: (기본값) 느리게 - 빠르게 - 느리게
- linear: 일정하게
- ease-in: 느리게 - 빠르게
- ease-out: 빠르게 - 느리게
- ease-in-out: 느리게 - 빠르게 - 느리게
<참고사이트>
https://easings.net/ko
https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function
https://greensock.com/docs/v3/Eases
transition-delay
: 전환효과가 몇 초 뒤에 시작할지 대기시간을 지정
- 0s: (기본값) 대기시간없음
- 시간: 대기시간(s)을 지정
perspective - css속성
하위요소를 관찰하는 원근 거리를 지정
perspective 속성과 함수 차이점
- 속성: 관찰 대상의 부모에다가 부여한다. (기준점 설정: perspective-origin)
- 대상: 관찰 대상에다가 부여한다. (기준점 설정: transform-origin)
backface-visibility
3D변환으로 회전된 요소의 뒷면 숨김 여부
- visible: (기본값) 뒷면 보임
- hidden: 뒷면 숨김