CSS 애니메이션 상태 및 재생 시간을 해킹합니다
이 기사는 CSS 애니메이션을 조작하는 것을 탐구하고, 특히 JavaScript를 사용하지 않고 애니메이션을 다시 시작하고 속도를 늦추는 문제를 해결합니다. 저자는 CSS 전용 Wolfenstein 3D에서 영감을 얻은 게임을 구축 한 경험에 대해 이야기하며, 특히 두 가지 까다로운 애니메이션 문제를 강조합니다.
핵심 문제는 브라우저의 애니메이션 상태 처리와 관련이 있습니다. 애니메이션이 이미 실행중인 동안 애니메이션 속성을 추가하거나 수정한다고해서 항상 예상대로 다시 시작하거나 속도가 느려지지는 않습니다.
문제 1 : 애니메이션 재생
저자는 애니메이션 재생에 대한 몇 가지 접근법을 탐구합니다.
- 다중 확인란 (비효율적) : CSS는 기존 애니메이션 만 계속해서 다시 시작하지 않기 때문에 각 애니메이션 시도에 별도의 확인란을 사용하면 실패합니다.
- 애니메이션 복제 : 각 트리거 작업에 대해 별개의 애니메이션 이름 (
spin1
,spin2
)을 만들지 만 신중한 CSS 규칙 순서가 필요합니다. - 추가 애니메이션 :
animation-name
속성에 동일한 애니메이션을 여러 번 추가하는 것도 기능하지만animation-fill-mode: forwards
로 예기치 않은 동작으로 이어질 수 있습니다.
주요 테이크 아웃은 CSS 애니메이션을 직접 다시 시작할 수 없다는 것입니다. 새 것을 추가해야합니다.
문제 2 : 슬로우 모션
애니메이션이 실행되는 동안 animation-duration
변경하면 Jarring 점프가 발생합니다. 브라우저는 현재 상태가 아니라 애니메이션의 시작부터 새로운 지속 시간을 적용합니다.
몇 가지 접근법이 탐색됩니다.
- 직접
animation-duration
변경 (비효율적) :animation-duration
변경 중간 애니메이션은 시각적 결함을 유발합니다. - 느린 애니메이션을 일시 중지하고 추가하면 원래 애니메이션을 일시 중지하고 같은 시작점을 가진 느린 애니메이션을 추가하면 예측할 수없는 일시 정지 지점으로 인해 여전히 점프가됩니다.
- 사용자 정의 속성 사용 : 보다 정교한 방법은 사용자 정의 속성 (
--angle1
,--angle2
)을 사용하여 애니메이션의 진행 상황을 추적하고 다른 지속 시간을 가진 애니메이션 간의 원활하게 전환합니다. 그러나@property
에 대한 브라우저 지원이 필요합니다. - "기어 변화"기술 : 이 영리한 기술은 각각 애니메이션과 함께 중첩 된 div를 사용하여 애니메이션 속도 사이를 전환합니다. 애니메이션 특정이며 일반화되지 않습니다.
- JavaScript Solutions : JavaScript는 애니메이션 진행 상황을 처리하고 다양한 애니메이션 속도간에 완벽하게 전환하여 복잡한 애니메이션에 유연성을 제공하는보다 강력한 솔루션을 제공합니다.
이 기사는 다른 CSS 전용 프로젝트의 영감을 인정하고 CSS 애니메이션 조작과 관련된 도전과 솔루션에 대한 포괄적 인 개요를 제공함으로써 마무리됩니다. 저자는 독자들이 제공된 예를 탐색하고 그들의 생각을 공유하도록 권장합니다.
위 내용은 CSS 애니메이션 상태 및 재생 시간을 해킹합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

프로젝트에 카운트 다운 타이머가 필요한 적이 있습니까? 그런 것은 플러그인에 도달하는 것이 당연하지만 실제로는 훨씬 더 많습니다.

타탄은 일반적으로 스코틀랜드, 특히 세련된 킬트와 관련된 패턴의 천입니다. tartanify.com에서 우리는 5,000 개가 넘는 타탄을 모았습니다

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

PHP 템플릿은 종종 서브 파 코드를 용이하게하는 데 나쁜 랩을 얻지 만, 그렇지 않아야합니다. PHP 프로젝트가 기본을 시행 할 수있는 방법을 살펴 보겠습니다.

Inline-Template 지시문을 사용하면 기존 WordPress 마크 업에 대한 진보적 인 향상으로 풍부한 VUE 구성 요소를 구축 할 수 있습니다.

우리는 항상 웹에 더 액세스 할 수 있도록하고 있습니다. 색상 대비는 수학 일 뿐이므로 Sass는 디자이너가 놓친 에지 케이스를 다룰 수 있습니다.
