멋쟁이사자처럼 프론트엔드 스쿨 7기 학습내용 정리 및 복습
transition
은 요소의 상태가 변해야 실행할 수 있지만, animation
은 요소의 상태 변화와 관계없이 실행/* [ from ~ to 속성 ] */ @keyframes animation-name { from {} to {} } /* [ 0% ~ 100% 속성 ] */ @keyframes animation-name { 0% {} 50% {} 100% {} }
영문 소문자, 문자열, 언더바(_), 하이픈(-)
을 사용함,
사용애니메이션이 진행되는 방식 설정
animation-timing-function: ease; animation-timing-function: cubic-bezier(0.1, 0.7, 1, 0.1); animation-timing-function: steps(4);
ease
: 기본값. 애니메이션 중간으로 갈수록 속도가 증가하고 끝에서 느려짐
linear
: 균일한 속도로 움직임
steps(n)
: n개의 단계
infitnite
: 무한 반복0.5
: 절반 재생normal
: 기본값. 정방향 재생reverse
: 역방향 재생alternate
: 정방향, 역방향 반복alternate-reverse
: 역방향, 정방향 반복normal
: 기본값. 스타일 적용 없음forwards
: 요소의 기존 스타일로 시작. 애니메이션 마지막 속성값 유지backwards
: 첫 번째 정의된 애니메이션 값으로 시작. 요소의 기존 스타일로 돌아감both
: 첫번째 정의된 값으로 시작. 마지막 값 유지paused
: 정지runnig
: 재생animation-name
animation-duration
animation-timing-function
animation-delay
animation-iteration-count
animation-direction
animation-fill-mode
animation-play-state
<!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>애니메이션 실습</title>
<style>
.snowman {
width: 195px;
height: 205px;
/* border: 4px solid #000; */
background-image: url(./img/keyframes-snowman2.png);
background-repeat: no-repeat;
background-position: left top;
background-size: auto 100%;
animation-name: move-snow;
animation-duration: 1s;
animation-iteration-count: infinite;
animation-timing-function: steps(6);
}
@keyframes move-snow {
/* 0% {
background-position: left 0;
} */
100% {
background-position: right 0;
}
}
</style>
</head>
<body>
<div class="snowman"></div>
</body>
</html>
<!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>애니메이션 실습</title>
<style>
.ghost {
width: 200px;
height: 200px;
border: 4px solid #000;
background-image: url(./img/keframes-ghost5.png);
background-repeat: no-repeat;
background-position: left top;
background-size: auto 100%;
animation-name: move-ghost;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-timing-function: steps(4);
}
@keyframes move-ghost {
0% {
background-position: left 0;
}
100% {
background-position: right 0;
}
}
</style>
</head>
<body>
<div class="ghost"></div>
</body>
</html>
영상을 삽입할 수 있는 태그
video 태그의 속성
autoplay
: 동영상 자동 재생
controls
: 재생, 정지 등 조작 메뉴 노출
loop
: 동영상 반복 재생
poster
: 동영상 재생 전에 보여 줄 이미지(썸네일)
preload
: 페이지를 열 때 무엇을 로드할지 결정
none
: 비디오 파일을 미리 로딩하지 않음. 서버가 최소한의 트래픽을 유지하며 페이지 로딩이 조금 더 빨라짐
metadata
: 비디오 파일을 미리 로딩하지 않지만 파일의 메타데이터(예를 들어서 영상의 길이)를 미리 가져옴
auto
: 비디오 파일을 미리 로딩하여 사용자가 바로 영상을 볼 수 있도록 준비
src
: 동영상 주소
type
: 동영상 타입(mp4, webm, ogg)
<track>
: <audio>
혹은 <video>
요소의 자식으로 자막과 같은 시간 기반 텍스트 데이터(텍스트 트랙) 지정
kind
: 텍스트 트랙 종류. subtitles(자막), captions(설명) 등
srclang
: 텍스트 트랙 언어 지정
label
: 텍스트 트랙 제목 지정
<video controls poster="batman.jpeg" preload="auto" width="450" height="300"> <source src="batman.mp4" type="video/mp4"> <source src="batman.ogv" type="video/ogg"> <source src="batman.webm" type="video/webm"> <track kind="subtitles" src="foo.en.vtt" srclang="ko" label="batman"> </video>
MP3
, WAV
, Ogg
src
: 파일의 경로controls
: 기본적인 동작을 조절하는 패널(재생, 볼륨, 탐색, 일시정지)autoplay
: 자동 재생 여부loop
: 반복 재생 여부preload
: 파일의 내용을 모두 불러올지 여부💡 알고 넘어가기!
📌 단순한 아이콘, 로고, 도형 등을 구현할 때 많이 사용됨
<img>
태그 사용background
배경으로 넣기<img>
태그나 css background
속성 사용