찾다
웹 프론트엔드CSS 튜토리얼응답 형 CSS 모션 경로를 만듭니다. 물론 우리는 할 수 있습니다!

응답 형 CSS 모션 경로를 만듭니다. 물론 우리는 할 수 있습니다!

최근에, 작업 애니메이션 Slack 채널에 대한 토론은 반응 형 CSS 모션 경로를 만드는 흥미로운 도전을 촉발했습니다. 이 게시물은 복잡성을 탐구하고 JavaScript 기반 솔루션을 제공합니다.

offset-path 속성을 사용하는 CSS 모션 경로는 SVG 경로와 유사하게 정의 된 사용자 정의 경로를 따라 애니메이션 요소를 활성화합니다. 그러나 주요 제한은 경로 좌표가 픽셀 값으로 취급되어 응답을 방해한다는 것입니다. 특정 크기로 정의 된 경로는 뷰포트 변경으로 우아하게 확장되지 않습니다.

offset-distance 속성은 경로를 따라 요소의 위치를 ​​제어하는 ​​반면 offset-rotate 회전을 관리합니다. offset-distance 애니메이션하면 모션 효과가 발생합니다.

핵심 문제는 CSS 모션 경로의 고정 픽셀 특성에 있습니다. ViewBox와 함께 스케일링하는 SVG 경로와 달리 CSS 경로는 정적으로 유지되므로 다양한 뷰포트 크기에 대한 수동 조정이 필요합니다. 이것은 간단한 경로에 대해 관리 할 수 ​​있지만 복잡한 경로, 특히 벡터 편집기에서 가져온 경로는 유지하기가 어려워집니다. 크기 조정하려면 번거로운 프로세스 인 각 브레이크 포인트의 벡터 편집기에서 경로를 다시출해야합니다.

간단한 길을 고려하십시오.

 .요소 {
  -경로 : 'M20,20 C20,100 200,0 200,100';
  오프셋-경로 : 경로 (var (-경로));
}

이것을 스케일링하면 다른 중단 점에 대한 경로 좌표를 다시 계산해야합니다.

 @Media (min-width : 768px) {
  .요소 {
    -경로 : 'M40,40 C40,200 400,0 400,200'; // 수동 재 계산
  }
}

이것은 복잡한 경로로 기하 급수적으로 더 어려워집니다.

JavaScript 솔루션은보다 우아한 접근 방식을 제공합니다. Greensock의 MotionPath 플러그인과 같은 라이브러리는 SVG 경로에 대한 스케일링을 제공하지만 SVG 컨텍스트 외부의 경로에는보다 일반적인 솔루션이 필요합니다. 사용자 정의 함수는 경로를 동적으로 스케일 할 수 있지만 이는 사소한 것이 아닙니다.

차트 라이브러리 접근법

D3.JS와 같은 차트 라이브러리는 잠재적 인 솔루션을 제공합니다. 좌표 세트에서 경로 문자열을 생성하여 맞춤형 스케일링 및 곡선 조정을 가능하게합니다. 그러나 여전히 기존 경로를 좌표 세트로 변환해야합니다. 이는 이상적이지 않습니다.

더 나은 접근 방식은 벡터 편집기에서 경로 문자열을 직접 처리하는 것입니다. SVGOMG와 같은 도구를 사용하여 SVG를 최적화 한 후 경로 데이터 및 뷰 박스 정보를 추출합니다.

<svg height="300" viewbox="0 0 79.375 79.375" width="300" xmlns="http://www.w3.org/2000/svg"><path d="M10.362 18.996s-6.046 21.453 1.47 25.329c10.158 5.238 18.033-21.308 29.039-18.23 13.125 3.672 18.325 36.55 18.325 36.55l12.031-47.544" fill="none" stroke="#000" stroke-width=".265"></path></svg>

우리는 d 속성 (Path String) 및 viewBox 속성에 관심이 있습니다.

향상된 JavaScript 솔루션

JavaScript 함수는 경로 문자열과 ViewBox 경계를 입력으로 사용합니다. SVGGeometryElement API를 사용하여 경로 문자열을 데이터 세트로 변환하여 경로의 길이를 반복하여 추출 지점입니다. 그런 다음 D3.js 스케일을 사용하여 컨테이너 크기와 뷰 박스 비율에 따라 스케일링 경로 문자열을 생성하는 데 사용됩니다. 이를 통해 경로는 컨테이너 내에서 비례 적으로 스케일링하면서 종횡비를 유지합니다. ResizeObserver 컨테이너가 크기가 커질 때마다 경로를 동적으로 업데이트합니다. 완전한 기능은 함께 제공되는 데모에서 사용할 수 있습니다.

이 접근법을 사용하면 다양한 중단 점에 대한 수동 재 계산없이 벡터 편집기의 경로를 직접 사용할 수 있으므로 반응 형 CSS 모션 경로를위한 강력하고 유지 관리 가능한 솔루션을 제공합니다. GitHub 패키지 인 "Inderer"는이 기능을 제공합니다. 데모는 솔루션을 선보이며 다양한 최적화 된 SVG 경로로 테스트 할 수 있습니다.

위 내용은 응답 형 CSS 모션 경로를 만듭니다. 물론 우리는 할 수 있습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
마우스 움직임을 시뮬레이션합니다마우스 움직임을 시뮬레이션합니다Apr 22, 2025 am 11:45 AM

라이브 토크 나 수업 중에 대화식 애니메이션을 표시해야한다면 슬라이드와 상호 작용하기가 항상 쉽지 않다는 것을 알 수 있습니다.

Astro Actions 및 Fuse.js로 검색을 전원합니다Astro Actions 및 Fuse.js로 검색을 전원합니다Apr 22, 2025 am 11:41 AM

Astro를 사용하면 빌드 중에 대부분의 사이트를 생성 할 수 있지만 Fuse.js와 같은 것을 사용하여 검색 기능을 처리 할 수있는 작은 서버 측 코드가 있습니다. 이 데모에서는 퓨즈를 사용하여 개인 "북마크"세트를 검색합니다.

정의되지 않은 : 세 번째 부울 가치정의되지 않은 : 세 번째 부울 가치Apr 22, 2025 am 11:38 AM

문서가 저장되는 동안 Google 문서에서 볼 수있는 것과 유사한 프로젝트 중 하나에서 알림 메시지를 구현하고 싶었습니다. 다시 말해, a

제 3의 진술의 방어에서제 3의 진술의 방어에서Apr 22, 2025 am 11:25 AM

몇 달 전에 나는 해커 뉴스를 썼고 (하나와 마찬가지로) IF 문을 사용하지 않는 것에 대한 (현재 삭제 된) 기사를 가로 질러 달렸습니다. 이 아이디어를 처음 접한다면 (나처럼

다국어 번역에 웹 스피치 API 사용다국어 번역에 웹 스피치 API 사용Apr 22, 2025 am 11:23 AM

공상 과학 소설의 초기부터 우리는 우리와 대화하는 기계에 대해 환상을 가지고 있습니다. 오늘은 평범합니다. 그럼에도 불구하고 제작 기술

Jetpack Gutenberg 블록Jetpack Gutenberg 블록Apr 22, 2025 am 11:20 AM

Gutenberg가 핵심으로 풀려 났을 때를 기억합니다. 왜냐하면 나는 그날 WordCamp에 있었기 때문입니다. 지금은 몇 달이 지났으므로 점점 더 많은 것을 상상합니다.

VUE에서 재사용 가능한 페이지 매김 구성 요소 생성VUE에서 재사용 가능한 페이지 매김 구성 요소 생성Apr 22, 2025 am 11:17 AM

대부분의 웹 애플리케이션의 배후에있는 아이디어는 데이터베이스에서 데이터를 가져 와서 최상의 방법으로 사용자에게 제시하는 것입니다. 우리가 거기에서 데이터를 다룰 때

'Box Shadows'와 Clip-Path를 함께 사용합니다'Box Shadows'와 Clip-Path를 함께 사용합니다Apr 22, 2025 am 11:13 AM

#039;는 당신이 의미있는 것처럼 보일 수있는 상황에 대한 약간의 단계를 수행하자. 이것에서

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전