這是我很長一段時間以來一直想嘗試的小片段。我終於開始重新建立 Google 地圖的這項標誌性功能:拖放這個名為 街景小人 的小傢伙,即可切換到街景視圖。
TL;DR
點選並拖曳右下角的小圖示到地圖上:
結構很簡單。我有:
<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 句柄:
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);
讓我們分解每個功能:
這透過記錄初始滑鼠位置並切換 isDragging 標誌來開始拖曳。
const onMouseDown = (e) => { isDragging = true; initialX = e.clientX; initialY = e.clientY; };
這會處理街景小人在拖曳過程中的移動和旋轉。它確保:
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); };
一旦使用者停止拖曳,就會重置街景小人的狀態:
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); };
此片段強調了簡單的動畫和互動性如何重新創建標誌性的使用者體驗。重點:
請隨意分叉 CodePen,進行更改並讓我知道您的想法! ??️
我使用的是Google的原始精靈,你可以在這裡看到並進行實驗:
你知道嗎? ✨ 我用的谷歌地圖位置才是真正的聖誕老人村!
有趣的事實:聖誕老人的芬蘭名字是 Joulupukki,他來自芬蘭???
以上是如何從 Google 地圖重新創建標誌性街景小人的詳細內容。更多資訊請關注PHP中文網其他相關文章!