오랫동안 해보고 싶었던 작은 단편입니다. 마침내 Google 지도의 상징적인 기능인 페그맨으로 알려진 이 작은 녀석을 드래그 앤 드롭하여 스트리트 뷰로 전환할 수 있는 기능을 다시 구현하게 되었습니다.
TL;DR
지도 위 오른쪽 하단에 있는 작은 아이콘을 클릭하여 드래그하세요.
HTML
구조는 간단합니다. 나는:
- 컨테이너 역할을 하는 #map(배경 이미지 적용).
- 오른쪽 하단에 위치한 #페그맨 컨테이너.
- 드래그 가능한 캐릭터에 대한 #pegman 요소 자체입니다.
<div> <h2> CSS </h2> <p>Positioning everything is simple, as you can see in the source code above, but the most important part is the rotate property. This is dynamically updated using JavaScript:<br> </p> <pre class="brush:php;toolbar:false">#pegman { /* other styles */ rotate: var(--r); }
회전 값은 사용자 상호작용에 따라 변경되며 이에 대해서는 다음에 자세히 살펴보겠습니다.
자바스크립트
여기서 모든 것은 사용자 상호작용을 중심으로 이루어집니다. JavaScript 핸들:
- 마우스 이벤트를 수신합니다.
- 페그맨의 위치와 회전을 동적으로 업데이트합니다.
- 더 나은 UX를 위해 부드러운 애니메이션을 추가합니다.
const pegman = document.querySelector('#pegman'); let isDragging = false; let initialX = 0; let initialY = 0; let inactivityTimeout; let lastX = 0; const timeout = 25; const maxDegrees = 50; // Event listeners pegman.addEventListener('mousedown', onMouseDown); document.addEventListener('mousemove', onMouseMove); document.addEventListener('mouseup', onMouseUp);
각 기능을 세분화해 보겠습니다.
onMouseDown
초기 마우스 위치를 기록하고 isDragged 플래그를 전환하여 드래그를 시작합니다.
const onMouseDown = (e) => { isDragging = true; initialX = e.clientX; initialY = e.clientY; };
onMouseMove
드래그 중 페그맨의 움직임과 회전을 처리합니다. 다음을 보장합니다:
- 회전은 일정 범위 내에서 유지됩니다(슈퍼맨이 날아다니는 것처럼 극단적인 각도를 피하기 위해).
- 회전 값은 --r을 사용하여 동적으로 업데이트됩니다.
const onMouseMove = (e) => { if (!isDragging) return; const dy = e.clientY - initialY; const dx = e.clientX - initialX; // Limit rotation range let rx = Math.max(-maxDegrees, Math.min(maxDegrees, dx - lastX)); pegman.setAttribute('style', `--r: ${rx}deg`); // Animate Pegman's position pegman.animate({ translate: `${dx}px ${dy}px` }, { duration: 100, fill: 'forwards', }); // Reset rotation after inactivity clearTimeout(inactivityTimeout); inactivityTimeout = setTimeout(() => { lastX = dx; pegman.setAttribute('style', `--r: 0deg`); }, timeout); };
onMouseUp
사용자가 드래그를 중지하면 Pegman의 상태가 재설정됩니다.
- 회전이 0으로 재설정됩니다.
- 페그맨은 순조롭게 원래 위치로 돌아옵니다.
const onMouseUp = () => { isDragging = false; // Reset rotation pegman.setAttribute('style', `--r: 0`); // Animate Pegman back to its original position pegman.animate({ translate: `0px 0px` }, { duration: 500, fill: 'forwards', easing: 'ease', }); // Clear residual state inactivityTimeout = setTimeout(() => { lastX = 0; }, timeout); };
최종 생각
이 스니펫은 간단한 애니메이션과 상호작용이 어떻게 상징적인 사용자 경험을 재현할 수 있는지 강조합니다. 주요 내용:
- CSS 사용자 정의 속성(예: --r)을 사용하면 스타일을 동적으로 유지하고 관리하기 쉽게 할 수 있습니다.
- 회전 제한은 사용자 상호 작용에 세련되고 자연스러운 느낌을 보장합니다.
- 타임아웃과 애니메이션 완화로 모션에 사실감을 더해줍니다.
CodePen을 자유롭게 포크하여 변경하고 여러분의 생각을 알려주세요! ??️
그런데...
여기에서 보고 실험해 볼 수 있는 Google의 원본 스프라이트를 사용하고 있습니다.
- 활주로 상태
- 드롭 상태
- 매달린 상태
아시나요? ✨ 제가 사용한 구글맵 위치는 실제 산타클로스 마을이에요!
재밌는 사실: 산타의 핀란드 이름은 Joulupukki이고 원래 핀란드 출신이에요 ???
위 내용은 Google 지도에서 상징적인 페그맨을 재현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

이봐, 스크롤 지역과 함께 작동하는 상당히 새로운 CSS 기능이 없습니까? 네, 스크롤 구동 애니메이션입니다. CSS 회전 목마의 항목을 스크롤하는 동안 애니메이션을 트리거 할 수 없다는 의미입니까?

TheBestMethodforincludingcssdependsonProjectSizeanDocplexity : 1) ForlargerProjects, useexternalcssforbettermainabilitableandableabilitable.2) ForsMallerProjects, 내부 CSSSSISSUITSIUT ABOIDEXTRAHTTPREQUESTS.ALWAYSIDERMANGERMANDIFIDANIDITION

@keyframesandcsstransitionsdifferincomplexity :@keyframesallowsfordeTailEdanimationsections, whilecsStransitsimplestateChanges.UsecsStransitionSforHovereffects likeToncolorChanges 및@keyframesforintricateanimationspinners.

알고 있습니다. 컨텐츠 관리 시스템 옵션이 수많은 톤을 사용할 수 있으며, 여러 번 테스트했지만 실제로는 아무도 없었습니다. y ' 이상한 가격 책정 모델, 어려운 커스터마이즈, 일부는 전체가되었습니다.

HTML의 일부에서 요소를 사용하여 CSS 파일을 HTML에 연결하면 달성 할 수 있습니다. 1) 태그를 사용하여 로컬 CSS 파일을 연결하십시오. 2) 여러 개의 태그를 추가하여 여러 CSS 파일을 구현할 수 있습니다. 3) 외부 CSS 파일은 다음과 같은 절대 URL 링크를 사용합니다. 4) 파일 경로 및 CSS 파일로드 순서의 올바른 사용을 확인하고 성능을 최적화하면 CSS Preprocessor를 사용하여 파일을 병합 할 수 있습니다.

Flexbox 또는 그리드 선택은 레이아웃 요구 사항에 따라 다릅니다. 1) Flexbox는 탐색 표시 줄과 같은 1 차원 레이아웃에 적합합니다. 2) 그리드는 매거진 레이아웃과 같은 2 차원 레이아웃에 적합합니다. 두 사람은 프로젝트에 사용하여 레이아웃 효과를 향상시킬 수 있습니다.

CSS 파일을 포함시키는 가장 좋은 방법은 태그를 사용하여 HTML 부분에 외부 CSS 파일을 소개하는 것입니다. 1. 태그를 사용하여 외부 CSS 파일을 소개합니다. 2. 작은 조정의 경우 인라인 CSS를 사용할 수 있지만주의해서 사용해야합니다. 3. 대규모 프로젝트는 SASS와 같은 CSS 전 처리기를 사용하여 @Import를 통해 다른 CSS 파일을 가져올 수 있습니다. 4. 성능의 경우 CSS 파일을 병합하고 CDN을 사용해야하고 CSSNANO와 같은 도구를 사용하여 압축해야합니다.


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

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

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는