지 구 여 행
노마드코더/코코아톡 클론코딩/3. Advanced CSS 본문
노마드코더 - 코코아톡 클론코딩 https://nomadcoders.co/kokoa-clone/lobby
코코아톡 클론 코딩 – 노마드 코더 Nomad Coders
HTML, CSS, Github
nomadcoders.co
Advanced CSS
Transitions
기본적으로 어떤 상태에서 다른 상태로의 '변화'를 애니메이션화하고 그 속도를 조절하는 방법
- Transition은 상태(state)가 없는 요소에 입력해야 한다.
(예를 들어, a → a:hover 상태로의 변화 속도를 변경하려면 a 요소 안에 Transition을 입력해야한다.)
- Transition에서 2개 이상의 속성에 대해 변화를 적용하려면 쉼표(,)로 구분
- Transition이 정상적으로 작동하려면, 요소와 요소:상태에 각각 변화 전과 후의 속성값을 가지고 있어야 한다.
* 모든 '변화'에 대해 Transition값을 적용하려면 → all
Easing Functions
상태가 변화하는 속도를 설명하는 수학적 함수
"애니메이션이 어떻게 변화할지 보여주는 함수"
(각 효과 시각적으로 확인 가능 : https://matthewlein.com/tools/ceaser )
1. Linear class :
함수 | linear |
cubic-bezier | cubic-bezier(0.0, 0.0, 1.0, 1.0) |
그래프 | ![]() |
설명 | 시작점부터 끝점까지 일정한 속도로 진행 |
2. Cubic-bezier class :
함수 | ease | ease-in | ease-in-out | ease-out |
cubic-bezier | (0.25, 0.1, 0.25, 1.0) | (0.42, 0.0, 1.0, 1.0) | (0.42, 0.0, 0.58, 1.0) | (0.0, 0.0, 0.58, 1.0) |
그래프 | ![]() |
![]() |
![]() |
![]() |
설명 | 천천히 시작 → 가속 → 천천히 감소 |
천천히 시작 → 점진적 속도 증가 → 갑자기 멈춤 |
천천히 시작 → 일정 속도 증가 → 천천히 감소 (처음에는 ease-in처럼, 나중에는 ease-out처럼 동작 수행) |
갑자기 시작 → 끝이 다가올 수록 속도 감소 |
3. steps() class :
출력 값의 도메인을 등거리 단계로 나누는 단계함수를 의미(예: 같은 간격으로 점프)
"staircase functions"
Importatnt
steps(number_of_steps, direction)
* number_of_steps : 양(+)의 정수(integer) → 출력값 : 도메인 전체 길이를 1/정수값 으로 나눠서 이동
* direction : 진행 방향
■ jump-start / start : 시작점(0%)에서 jump 후, 1/n 기간동안 정지
jump-start / start jump-end / end jump-none jump-both stpes(2, jump-start)
steps(2, start)steps(4, jump-end)
steps(4, end)steps(5, jump-none) steps(3, jump-both)
■ jump-end / end : 0%에서부터 1/n 기간동안 정지 후, jump
■ jump-none : 시작점(0%)과 끝점(100%)에서 jump가 발생하지 않음;
0%에서 1/n기간 정지 후, jump → 100%에서 1/n 기간 정지
■ jump-both : 0%와 100%에서 jump가 발생;
1/n 기간동안 정지 후, jump → 100%는 jump가 끝나는 순간(+지점)
※ 시작하자마자 시작점(0%)에서 전체를 1/n으로 나눈 첫 시작점으로 jump
예: steps(3, jump-both)의 경우, 시작하자마자 0% → 0.33%(거리의 1/3)로 jump 후,
1/3 기간동안 정지
Transformations
- transform 속성으로 요소(element)에 회전, 크기조절, 기울이기, 이동효과등 2D 또는 3D 변형 적용 가능
* 변경가능한 요소만 정상적으로 작동
(예외 : non-replaced inline boxes, table-column boxes, table-column-group boxes)
- transformation은 다른 형제(부모요소 box의 다른 요소들)를 변형시키지 않고, 요소를 이동시키기 위해 사용
즉, transformation은 box차원이 아닌, 페이지의 다른 픽셀 부분에서 발생
- transition과 함께 활용
Transform Functions
분류 | 함수명 | 의미 | 예제 |
행렬 변환 |
matrix() | 동종 2D 변환 행렬 설명 | matrix(a, b, c, d, tx, ty) |
matrix3d() | 3D변환을 4x4 동종행렬로 설명 | matrix3d(a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4) | |
원근 | perspective() | 사용자와 z=0 평면 사이의 거리를 설정 | perspective(length) |
회전 | rotate() | 2D 평면의 고정점을 중심으로 요소를 회전 | ![]() |
rotate3d() | 3D 공간에서 고정된 축을 중심으로 요소를 회전 (x, y, z, a(anlge)) |
![]() |
|
rotateX() | 수평 축(X축)을 중심으로 요소를 회전 | ![]() |
|
rotateY() | 수직 축(Y축)을 중심으로 요소를 회전 | ![]() |
|
rotateZ() | Z축을 중심으로 요소를 회전 | ||
크기 | scale() | 2D 평면에서 요소의 크기 조절 | ![]() |
scale3d() | 3D 공간에서 요소의 크기 조절 | ![]() |
|
scaleX() | 요소를 수평 축(X축)으로 크기 조절 | ![]() |
|
scaleY() | 요소를 수직 축(Y축)으로 크기 조절 | ![]() |
|
scaleZ() | 요소를 Z축으로 크기 조절 | ![]() |
|
왜곡 | skew() | 2D 평면에서 요소 기울이기 |
![]() |
skewX() | 요소를 수평 방향(X축)으로 기울이기 | ![]() |
|
skewY() | 요소를 수직 방향(Y축)으로 기울이기 | ||
이동 | translate() | 2D 평면에서 요소를 이동 | ![]() ![]() |
translate3d() | 3D 평면에서 요소를 이동 | ![]() |
|
translateX() | 요소를 수평 축(X축)을 따라 이동 | ![]() |
|
translateY() | 요소를 수직 축(Y축)을 따라 이동 | ||
translateZ() | 요소를 Z축을 따라 이동 |
* 일부 함수 : value 값이 1개 : X축 / value값이 2개일 경우 : 순서대로 X축, Y축
Animations
"특정 상태(state)가 아니어도 transition이 일어나는 것 처럼 애니메이션을 출력하는 방법"
(애니메이션 효과 시각적으로 확인 : https://animista.net/ )
1. 기본 작동 방법:
Importatnt
@keyframes (함수명) {
from {
시작상태 (예. transform: rotateX(0);)
}
to {
끝나는상태 (예. transform: rotateX(360deg);)
}
}
해당 요소 {
animation: 함수명 출력시간 출력방식 (infinite);
}
* 함수명의 첫글자는 반드시 '소문자'여야 한다. (이후에는 대문자 사용 가능)
2. 부드러운 연속성 적용:
위의 예제의 경우, 5s의 출력시간이 끝나면 처음 상태로 돌아가고 다시 시작한다.
→ 전체 비율(percent,%)을 설정해서 부드러운 애니메이션 출력 가능
Media Queries
"오직 CSS만을 이용해서 사용자의 스크린의 사이즈 알 수 있는 방법"
"반응형 디자인"
1. 미디어유형 :
■ all : 모든 장치에 적합
■ print : 출력 미리보기 화면에 표시될 문서
■ screen : 스크린
■ speech : 음성 합성장치(sythesizer)
2. 논리 연산자를 이용하여 다수의 쿼리를 다양한 방법으로 연결 가능
■ and : 복수의 미디어 기능을 하나의 미디어 쿼리로 결합
■ not : 미디어쿼리 자체를 부정; 근본적으로 원래의 의미를 반전
■ only : 구형 브라우저가 스타일을 적용시키지 못하게 함
3. 미디어쿼리는 대소문자를 구분하지 않음
4. (유형을 지정했다면) 문서를 보여주는 미디어의 유형이 일치하고 모든 미디어 특성 표현식의 계산값이 참일 때
참으로 계산
5. 자주 사용되는 함수들
■ (min/max-)device-width : 출력장치 렌더링 표면의 (최소/최대) 너비; 핸드폰에만 적용 (브라우저x)
■ (min/max-)device-height : 출력장치 렌더링 표면의 (최소/최대) 높이; 핸드폰에만 적용 (브라우저x)
■ width : 스크롤바를 포함한 스크린 너비
■ height : 스크린 높이
■ orientation : Viewport(스크린)의 방향;
세로모드(portrait) / 가로모드(landscape)
출처 :
1. 노마드코더 / 코코아톡 클론코딩 : https://nomadcoders.co/kokoa-clone
2. MDN / CSS reference : https://developer.mozilla.org/en-US/
3. Coderifleman's blog / 중학생도 알 수 있는 베지에 곡선(Bezier Curves)
: https://blog.coderifleman.com/2016/12/30/bezier-curves/
'필기노트 > 노마드코더' 카테고리의 다른 글
노마드코더/바닐라JS로 그림 앱 만들기/1. 그리기 기능 설정하기 (0) | 2022.10.02 |
---|---|
노마드코더/바닐라JS로 크롬 앱 만들기/2. JS on the browser (0) | 2022.08.01 |
노마드코더/바닐라JS로 크롬 앱 만들기/1. Basic Javascript (0) | 2022.07.24 |
노마드코더/코코아톡 클론코딩/2. Learning CSS (0) | 2022.07.01 |
노마드코더/코코아톡 클론코딩/1. Learning HTML (0) | 2022.06.27 |