Cascading Style Sheet
웹 페이지를 디자인하기 위해 사용하는 언어
우선 순위
인라인 우선 > 내장 , 링크 방식 (늦게 쓰여진 게 우선)
<div style="color:red; margin: 20px;"></div>
<head>
<style>
div {color:red; margin: 20px;}
</style>
</head>
<head>
태그 내부에 사용할 style을 <style>
태그로 미리 선언하여 사용!<link rel="stylesheet" href="./css/main.css">
꾸미고자하는 html요소를 콕 집어 선택하기위한 수단을 선택자라고 한다.
* {color: red;}
태그이름{color: red;}
.class{color: red;}
#Id{color: red;}
선택자,선택자{color: red;}
<div>
<ul>
<li class="orange">오렌지</li>
<li>딸기</li>
<li>망고</li>
</ul>
<span class="orange">오렌지</span>
</div>
일치 선택자 :
span.orange{color: red;}
자식 선택자 : > 사용
ul > .orange{color: red;}
ㄴ ul태그 바로 밑에 존재하는 하위 요소 중 클래스가 오렌지인 태그 모두 선택
후손 선택자 : "띄어쓰기"가 선택자의 기호 !!
div .orange{color: red;}
ㄴ div태그의 하위 요소 중 클래스가 오렌지인 태그 모두 선택
인접 형제 선택자 : + 사용
.orange + li
ㄴ 클래스 오렌지의 다음 형제 요소 딸기,망고 중 하나를 선택
일반 형제 선택자 : ~ 사용
.orange ~ li
ㄴ 클래스 오렌지의 다음 형제 요소 인 li의 딸기,망고 모두를 선택
선택자 뒤에 쓴다.
<:hover>
- 커서가 올라가 있을 때<:active>
- 마우스를 클릭했을 때<:focus>
- 포커스 되었을 때 (input 태그 등)<:first-child>
- 형제 요소 중 첫번째 자식<:last-child>
- 형제 요소 중 마지막 자식<:nth-child(2n+1)>
- 홀수 번째 자식.box::before{ content: "앞"; }
<abc::before>
- abc 요소의 내부 앞에 내용을 삽입
.box::after{ content: "뒤"; }
<abc::after>
- abc 요소의 내부 뒤에 내용을 삽입
지정한 특정 속성을 가지고 있는 태그를 선택하는 선택자
[속성이름] 또는 [속성이름="속성값"]으로 쓴다.
<style>
[title] { background: black; color: yellow; }
</style>
<style>
[title="first h2"] { background: black; color: yellow; }
</style>
!important > 인라인 스타일 > 아이디 선택자 >
클래스/속성/가상 선택자 > 태그 선택자 > 전체 선택자
수평 방향 정렬
여러 가지 효과를 설정하거나 제거
텍스트의 줄 간격을 설정
두껍게 표현할지
폰트 크기 (절대적 크기,상대적 크기)
% : 기본크기를 100%로 놓고, 그에대한 상대적 크기를 설정
em : 해당 글꼴을 1em으로 놓고, 상대적인 크기를 설정
px : 스크린 픽셀을 기준으로 하는 절대적 크기 설정
글꼴 설정
:transparent;
-투명함
background-repeat : 이미지 수직,수평 반복
background-repeat-x : 수평반복
background-repeat-y : 수직반복
background-no-repeat : 반복x
반복되지않는 배경의 상대 위치를 설정
left top / center top / px,% / 등 조합하거나 직접 명시하면 됨
Background-size: cover; 비율을 유지, 요소의 더 넓은 너비에 맞춤
Background-size: contain; 비율을 유지, 요소의 더 짧은 너비에 맞춤
위치가 설정된 배경을 해당 위치에 고정
scroll : 이미지랑 내용이랑 같이 스크롤
fixed : 이미지가 뷰포트에 고정되어있고 스크롤이 안됨
local : 요소 내 스크롤 시 이미지가 같이 스크롤
선형 그라데이션 넣기
원형 그라데이션도 있음
:link
링크의 기본 상태
:visited
사용자가 한 번이라도 연결된 페이지를 방문한 상태
:hover
마우스 커서가 링크 위에 올라가 있는 상태
:active
마우스로 링크를 클릭하고 있는 상태
:focus
키보드나 마우스의 이벤트(event) 또는 다른 형태로 해당 요소가 포커스(focus)를 가지고 있는 상태
<style>
a:visited { color: brown; }
a:hover { color: coral; }
a:hover, a:active { background-color: #FF4500; }
</style>
테두리 한줄로 표현
여백 설정
수직 방향 정렬
박스모델은 html 요소를 padding, border, margin, content 로 구분한다.
테두리와 이웃하는 요소 사이의 간격
음수를 사용하여 겹치게 표현도 가능
margin-auto
: 브라우저가 여백을 계산하여 가운데 정렬에 활용한다!
inherit
: 부모요소의 마진을 그대로 물려받음
border와 content간의 안쪽(내부) 여백
한번에 작성할때 top, right, bottom, left 시계방향 순으로 설정함.
3개 작성할땐 top / right,left / bottom 순서
2개 작성할땐 top,bottom / right,left
display요소를 사용해서 디스플레이 속성값 변경가능
새로운 라인에서 시작x, 글쓴 만큼 차지
span
: 대표적 인라인 요소. 콘텐츠 영역을 설정하는 용도 . 요소가 수평으로 쌓임
새로운 라인에서 시작하며, 해당 라인의 모든 너비를 차지
div
: 대표적 블록 요소. 콘텐츠 영역을 설정하는 용도 . 요소가 수직으로 쌓임
인라인처럼 동작하지만 요소 내부에는 블록처럼 동작
너비와 높이 설정, 여백 지정 가능
display:inline-block;
block요소가 수직으로만 쌓이는 문제점을 해결하고자 나온 개념
opacity: 1
불투명
opacity: 0~1 사이의 소수점 숫자
모습만 숨겨지고 속성은 남는다
자리 차지함
모습과 속성을 숨기고 자리는 차지한다
그냥 없애 버리고 자리도 사라진다
단순히 웹페이지 흐름에 따라 차례대로 위치시킴
요소 자신=기본 위치를 기준으로 배치!
위치가 설정된 부모나 조상 요소를 기준으로 배치!
위치설정한 조상이 없다면 body를 기준으로 배치됨
뷰포트(브라우저)를 기준으로 배치!
웹페이지가 스크롤 되도 계속 같은 곳에 위치
요소들이 쌓이는 스택의 순서를 설정
양수나 음수 모두 설정가능하며 크기가 클수록 앞쪽으로 온다.
stack order (요소 쌓임 순서)
1. 요소에 position 속성의 값이 있는 경우 위에 쌓임 (기본값 static 제외)
2. 1번 조건이 같을 경우, z-index 속성의 숫자 값이 높을 수록 위에 쌓임.
3. 1,2,번 조건까지 같을 경우 , html 다음 구조일 수록 위에 쌓임.
** position 속성의 값으로 absolute, fixed가 지정된 요소는
display 속성이 block으로 변경됨
요소가 크기이상으로 내용이 넘쳤을 때 보여짐을 제어하는 단축 속성
넘친 내용 그대로
넘친 내용 잘라냄
넘친 내용 잘라내고 스크롤 바 생성
넘친 내용이 있는 경우에만 잘라내고 스크롤바 생성
보여짐을 제어하는 "개별" 속성들
레이아웃 배치 전용 기능으로 고안됨.
플렉스를 쓰는 것만으로 가로로 배치되고 내가 가진 내용의 width만큼 차지하게 됨.
height는 컨테이너의 높이만큼 늘어남 .
아이템들이 배치되는 축의 방향을 결정함.
row
: 좌->우
row-reverse
: 우->좌
column
: 위-> 아래
column-reverse
: 아래-> 위
컨테이너가 더 이상 아이템들을 한 줄에 담을 여유공간이 없을 때 아이템 줄바꿈을 어떻게 할건지 결정하는 속성
nowrap
: 줄 바꿈이 없으므로 삐져나감
wrap
: 여러줄로 묶음
wrap-reverse
: wrap 반대방향으로 묶음
“justify”는 메인축(오뎅꼬치) 방향으로 정렬
flex-start
: 기본값.
flex-end
: 끝점으로 정렬
center
: 가운데로 정렬
space-between
: 아이템들 사이에 균일한 간격 만들어줌
space-around
: 아이템들 둘레에 균일한 간격 만들어줌
space-evenly
: 아이템들 사이와 양끝에 균일한 간격 만들어줌
“align”은 수직축(오뎅을 뜯어내는) 방향으로 정렬
stretch
: 기본값. 끝까지 쭉 늘어남
flex-start
: 시작점으로 정렬
flex-end
: 끝으로 정렬
center
: 가운데 정렬
flex-wrap:wrap;이 된 상태에서, 아이템들의 행이 2줄 이상 되었을때 수직축 방향을 결정하는 속성
stretch
flex-start
flex-end
center
space-between
space-around
space-evenly
flex-direction이 row일 때는 너비, column일 때는 높이 크기를 설정
html요소를 움직이거나 원근법,회전,크기 변경, 기울임 같은 동작을 제공함
translate(x,y)
/ translateX(x)
/ translateY(y)
이동 (단위px)
scale(x,y)
/ scaleX(x)
/ scaleY(y)
크기를 주어진 배율만큼 늘리거나 줄임 (단위px)
rotate
주어진 각도만큼 회전 (단위deg)
skew(x,y)
/ skewX(x)
/ skewY(y)
기울임 (단위deg)
translateZ(z)
현재 위치에서 z축 거리만큼 이동
translate3d(x,y,z)
현재 위치에서 작성한 거리만큼 이동시킴
scaleZ(z)
z축 크기를 주어진 배율만큼 늘리거나 줄임
scale3d(x,y,z)
크기를 작성한 배율만큼 늘리거나 줄임
rotateX(x)
/ rotateY(y)
/ rotateZ(z)
x,y,z 축 기준으로 회전
3d변환으로 회전된 요소의 뒷면 숨김 여부
visible
hidden
정해진 시간 동안 요소의 속성값을 부드럽게 변화시킬 수 있음!
추가할 전환 효과를 설정
지속시간
전환효과의 타이밍 함수를 지정
ease
: 디폴트값 . 느리게-빠르게-느리게
linear
: 일정하게
몇 초 뒤 전환 효과를 시작할지 대기시간
단축형으로 작성할때
transition: 속성명 지속시간 타이밍함수 대기시간;
지속시간은 필수 포함임!!
세밀하게 애니메이션을 조절할 수 있다.
애니메이션을 만들 때 사용되는 규칙
from / to
from에 처음 스타일 작성, to에 마지막 스타일 작성
@keyframes animation-name {
from { margin-left: 100%; }
to { margin-left: 0%; }
}
0% ~ 100%
더 복잡한 효과를 쓰기 위해 퍼센트 사용
@keyframes animation-name {
0% { border-color: red; }
50% { border-color: orange; }
100% { border-color: yellow; }
}
animation-name
요소와 키프레임 연결해주는 아이
animation-duration
재생하는 시간 설정 . 기본값은 0초
animation-delay
지연시간
animation-iteration-count
반복횟수를 설정한다.
infinite로 설정 시, 무한 반복 가능
animation-timing-function
시간당 속도 설정
linear, ease 있음
animation-direction
애니메이션 방향
reverse(진행방향을 반대로) 와 alternate(진행방향을 반복될때마다 계속 변경)가 있다
<출처 및 레퍼런스>
포스코X코딩온
ChatGPT
TCP school https://www.tcpschool.com/css/css_intro_basic
1분코딩 https://studiomeal.com/archives/197