国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 css教學(xué) 如何從 Google 地圖重新創(chuàng)建標(biāo)誌性街景小人

如何從 Google 地圖重新創(chuàng)建標(biāo)誌性街景小人

Dec 19, 2024 pm 04:11 PM

How to Recreate the Iconic Pegman from Google Maps

這是我很長一段時(shí)間以來一直想嘗試的小片段。我終於開始重新建立 Google 地圖的這項(xiàng)標(biāo)誌性功能:拖放這個(gè)名為 街景小人 的小傢伙,即可切換到街景視圖。

TL;DR
點(diǎn)選並拖曳右下角的小圖示到地圖上:

超文本標(biāo)記語言

結(jié)構(gòu)很簡單。我有:

  • 用作容器的#map(應(yīng)用了背景圖像)。
  • 位於右下角的#pegman-container。
  • 可拖曳角色的 #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);
}

旋轉(zhuǎn)值會(huì)根據(jù)使用者互動(dòng)而變化,我們接下來將深入探討。

JavaScript

這裡的一切都圍繞著使用者互動(dòng)。 JavaScript 句柄:

  • 監(jiān)聽滑鼠事件。
  • 動(dòng)態(tài)更新街景小人的位置與旋轉(zhuǎn)。
  • 加入流暢的動(dòng)畫以獲得更好的使用者體驗(yàn)。
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);

讓我們分解每個(gè)功能:

滑鼠按下時(shí)

這透過記錄初始滑鼠位置並切換 isDragging 標(biāo)誌來開始拖曳。

const onMouseDown = (e) => {
  isDragging = true;
  initialX = e.clientX;
  initialY = e.clientY;
};

滑鼠移動(dòng)時(shí)

這會(huì)處理街景小人在拖曳過程中的移動(dòng)和旋轉(zhuǎn)。它確保:

  • 旋轉(zhuǎn)保持在一定範(fàn)圍內(nèi)(以避免超人飛行等極端角度)。
  • 旋轉(zhuǎn)值使用--r動(dòng)態(tài)更新。
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);
};

滑鼠按下時(shí)

一旦使用者停止拖曳,就會(huì)重置街景小人的狀態(tài):

  • 旋轉(zhuǎn)重設(shè)為 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);
};

最後的想法

此片段強(qiáng)調(diào)了簡單的動(dòng)畫和互動(dòng)性如何重新創(chuàng)建標(biāo)誌性的使用者體驗(yàn)。重點(diǎn):

  • 使用 CSS 自訂屬性(如 --r)使樣式保持動(dòng)態(tài)且易於管理。
  • 旋轉(zhuǎn)限制確保了使用者互動(dòng)的完美、自然的感覺。
  • 超時(shí)和緩動(dòng)動(dòng)畫為動(dòng)作增添了真實(shí)感。

請隨意分叉 CodePen,進(jìn)行更改並讓我知道您的想法! ???

順便一提...

我使用的是Google的原始精靈,你可以在這裡看到並進(jìn)行實(shí)驗(yàn):

  • 跑道狀態(tài)
  • 掉落狀態(tài)
  • 懸空狀態(tài)

你知道嗎? ? 我用的谷歌地圖位置才是真正的聖誕老人村!
有趣的事實(shí):聖誕老人的芬蘭名字是 Joulupukki,他來自芬蘭???

以上是如何從 Google 地圖重新創(chuàng)建標(biāo)誌性街景小人的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會(huì)阻塞頁面渲染是因?yàn)闉g覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關(guān)鍵CSS並內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(fù)雜腳本控制。

外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。 1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

什麼是AutoPrefixer,它如何工作? 什麼是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個(gè)根據(jù)目標(biāo)瀏覽器範(fàn)圍自動(dòng)為CSS屬性添加廠商前綴的工具。 1.它解決了手動(dòng)維護(hù)前綴易出錯(cuò)的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設(shè)置browserslist、在構(gòu)建流程中啟用;4.注意事項(xiàng)有不手動(dòng)加前綴、保持配置更新、非所有屬性都加前綴、建議配合預(yù)處理器使用。

什麼是圓錐級函數(shù)? 什麼是圓錐級函數(shù)? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

CSS教程,用於創(chuàng)建粘性標(biāo)頭或頁腳 CSS教程,用於創(chuàng)建粘性標(biāo)頭或頁腳 Jul 02, 2025 am 01:04 AM

TocreatestickyheadersandfooterswithCSS,useposition:stickyforheaderswithtopvalueandz-index,ensuringparentcontainersdon’trestrictit.1.Forstickyheaders:setposition:sticky,top:0,z-index,andbackgroundcolor.2.Forstickyfooters,betteruseposition:fixedwithbot

CSS自定義屬性的範(fàn)圍是什麼? CSS自定義屬性的範(fàn)圍是什麼? Jun 25, 2025 am 12:16 AM

CSS自定義屬性的作用域取決於其聲明的上下文,全局變量通常定義在:root中,而局部變量則定義在特定選擇器內(nèi),以便組件化和隔離樣式。例如,定義在.card類中的變量僅對匹配該類的元素及其子元素可用。最佳實(shí)踐包括:1.使用:root定義全局變量如主題色;2.在組件內(nèi)部定義局部變量以實(shí)現(xiàn)封裝;3.避免重複聲明同一變量;4.注意選擇器特異性可能引發(fā)的覆蓋問題。此外,CSS變量區(qū)分大小寫,且應(yīng)在使用前定義以避免錯(cuò)誤。若變量未定義或引用失敗,則會(huì)採用回退值或默認(rèn)值initial。調(diào)試時(shí)可通過瀏覽器開發(fā)者工

解鎖CSS動(dòng)畫的潛力:深度潛水 解鎖CSS動(dòng)畫的潛力:深度潛水 Jun 20, 2025 am 12:14 AM

cssanimationsenhancewebpagesbyimprovinguserexperienceandsiteFunctionallity.1)usetransitionsforsmoothstylechanges,asinthebuttoncolorexample.2)losplyKeyKeyframesforeSfordEteTailEdAnimations.3)

See all articles