日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

如何使用JavaScript創(chuàng)建一只圖像放大鏡?

來源: 責(zé)編: 時(shí)間:2023-08-05 11:45:41 4962觀看
導(dǎo)讀譯者 | 布加迪審校 | 重樓如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個(gè)小小的重要功能可以大大改善您網(wǎng)站的用戶體驗(yàn)。以一種無縫銜接的方式構(gòu)建圖像放大鏡可能

譯者 | 布加迪Oo128資訊網(wǎng)——每日最新資訊28at.com

審校 | 重樓Oo128資訊網(wǎng)——每日最新資訊28at.com

如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個(gè)小小的重要功能可以大大改善您網(wǎng)站的用戶體驗(yàn)。Oo128資訊網(wǎng)——每日最新資訊28at.com

Oo128資訊網(wǎng)——每日最新資訊28at.com

如果您正在構(gòu)建一個(gè)照片庫應(yīng)用程序,圖像放大鏡也派上用場(chǎng),因?yàn)榉糯髨D像的特定部分是一項(xiàng)重要功能。Oo128資訊網(wǎng)——每日最新資訊28at.com

構(gòu)建圖像放大鏡

該項(xiàng)目中使用的代碼放在GitHub代碼倉庫中,可供人們免費(fèi)使用,采用MIT許可證。Oo128資訊網(wǎng)——每日最新資訊28at.com

創(chuàng)建一個(gè)文件夾,在該文件夾中添加index.html文件、style.css文件和main.js文件。將這個(gè)樣板代碼添加到index.html中Oo128資訊網(wǎng)——每日最新資訊28at.com

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Image Magnifier</title> <link rel="stylesheet" href="style.css" /></head><body></body></html>

body標(biāo)簽中,創(chuàng)建一個(gè)類名為header”的div元素。然后在headerdiv中,添加h1標(biāo)題元素來顯示圖像放大鏡的標(biāo)題。Oo128資訊網(wǎng)——每日最新資訊28at.com

您可以根據(jù)需要來定制文本。接下來,包括兩個(gè)span元素,它們提供使用放大鏡的說明,并向用戶顯示當(dāng)前縮放級(jí)別。Oo128資訊網(wǎng)——每日最新資訊28at.com

在標(biāo)題部分之后,創(chuàng)建一個(gè)類名為container”的div元素。在這個(gè)div中,添加另一個(gè)類名為magnifier”的div元素,并運(yùn)用“hidden類將其隱藏起來Oo128資訊網(wǎng)——每日最新資訊28at.com

這個(gè)元素將表示放大鏡圖像。然后,添加一個(gè)script標(biāo)簽,src屬性設(shè)置為/main.jsOo128資訊網(wǎng)——每日最新資訊28at.com

<body> <class="header"> <h1>Image Magnifier</h1> <span>Press <strong>Arrow Up</strong> or <strong>Arrow Down</strong> to increase or decrease athe zoom level.</span> <span>Zoom Level: <strong class="zoom-level">1</strong></span> </div> <class="container"> <class="magnifier hidden"></div> </div> <script src="/main.js"></script></body>

把style.css文件中的代碼換成以下代碼。需要的話,您還可以使用Less之類的CSS預(yù)處理器。Oo128資訊網(wǎng)——每日最新資訊28at.com

:root { --magnifier-width: 150; --magnifier-height: 150;}body { display: flex; flex-direction: column; align-items: center;}.container { width: 400px; height: 300px; background-size: cover; background-image: url("https://cdn.pixabay.com/photo/2019/03/27/15/24/animal-4085255_1280.jpg"); background-repeat: no-repeat; position: relative; cursor: none;}.magnifier { border-radius: 400px; box-shadow: 0px 11px 8px 0px #0000008a; position: absolute; width: calc(var(--magnifier-width) * 1px); height: calc(var(--magnifier-height) * 1px); cursor: none; background-image: url("https://cdn.pixabay.com/photo/2019/03/27/15/24/animal-4085255_1280.jpg"); background-repeat: no-repeat;}span { display: block;}.header { display: flex; flex-direction: column; align-items: center;}.hidden { visibility: hidden;}> span:nth-child(3) { font-size: 20px;

在main.js文件中,使用document.querySelector方法檢索帶有類名放大鏡容器”的HTML元素并將它們分別賦予給變量magnifier和變量container。Oo128資訊網(wǎng)——每日最新資訊28at.com

然后,使用getComputedStyle函數(shù)檢索放大鏡元素的寬度和高度,然后使用substring和indexOf方法從返回的字符串中提取數(shù)值。Oo128資訊網(wǎng)——每日最新資訊28at.com

將提取的寬度賦予變量magnifierWidth,將提取的高度賦予變量magnifierHeight。Oo128資訊網(wǎng)——每日最新資訊28at.com

let magnifier = document.querySelector(".magnifier");let container = document.querySelector(".container");let magnifierWidth = getComputedStyle(magnifier).width.substring(  0,   getComputedStyle(magnifier).width.indexOf("p"));let magnifierHeight = getComputedStyle(magnifier).width.substring(   0,  getComputedStyle(magnifier).height.indexOf("p"));

接下來,為縮放級(jí)別、最大縮放級(jí)別以及光標(biāo)和放大鏡圖像的位置設(shè)置變量。Oo128資訊網(wǎng)——每日最新資訊28at.com

let zoomLevelLabel = document.querySelector(".zoom-level");let zoom = 2;let maxZoomLevel = 5;let pointerX;let pointerY;let magnifyX;let magnifyY;

在上面的代碼塊中,pointerX和pointerY都表示光標(biāo)在X和Y軸上的位置。Oo128資訊網(wǎng)——每日最新資訊28at.com

現(xiàn)在,定義兩個(gè)輔助函數(shù)getZoomLevel返回當(dāng)前縮放級(jí)別和getPointerPosition返回帶有光標(biāo)x坐標(biāo)和y坐標(biāo)的對(duì)象Oo128資訊網(wǎng)——每日最新資訊28at.com

function getZoomLevel() { return zoom;}function getPointerPosition() { return { x: pointerX, y: pointerY }}

接下來,創(chuàng)建一個(gè)updateMagImage函數(shù),該函數(shù)使用當(dāng)前光標(biāo)位置創(chuàng)建一個(gè)新的MouseEvent對(duì)象,并將其分派給容器元素。這個(gè)函數(shù)負(fù)責(zé)更新放大鏡圖像。Oo128資訊網(wǎng)——每日最新資訊28at.com

function updateMagImage() { let evt = new MouseEvent("mousemove", { clientX: getPointerPosition().x, clientY: getPointerPosition().y, bubbles: true, cancelable: true, view: window, }); container.dispatchEvent(evt);}

現(xiàn)在,您應(yīng)該為keyup事件的窗口對(duì)象添加一個(gè)事件偵聽器,當(dāng)用戶按下ArrowUpArrowDown鍵時(shí),可調(diào)整縮放級(jí)別。Oo128資訊網(wǎng)——每日最新資訊28at.com

keyup事件上的回調(diào)函數(shù)還負(fù)責(zé)更新縮放級(jí)別標(biāo)簽并觸發(fā)updateMagImage函數(shù)。Oo128資訊網(wǎng)——每日最新資訊28at.com

window.addEventListener("keyup", (e) => { if (e.key === "ArrowUp" && maxZoomLevel - Number(zoomLevelLabel.textContent) !== 0) { zoomLevelLabel.textContent = +zoomLevelLabel.textContent + 1; zoom = zoom + 0.3; updateMagImage(); } if (e.key === "ArrowDown" && !(zoomLevelLabel.textContent <= 1)) { zoomLevelLabel.textContent = +zoomLevelLabel.textContent - 1; zoom = zoom - 0.3; updateMagImage(); }});

然后針對(duì)“mousemove事件容器元素添加事件偵聽器。Oo128資訊網(wǎng)——每日最新資訊28at.com

在回調(diào)函數(shù)中,添加從放大鏡元素中移除hidden類以使其可見的功能,并計(jì)算鼠標(biāo)相對(duì)容器的位置,考慮到頁面滾動(dòng)。Oo128資訊網(wǎng)——每日最新資訊28at.com

該函數(shù)還應(yīng)該將放大鏡的變換樣式設(shè)置為計(jì)算位置,并根據(jù)縮放級(jí)別和鼠標(biāo)位置確定放大鏡圖像的背景大小和位置。Oo128資訊網(wǎng)——每日最新資訊28at.com

container.addEventListener("mousemove", (e) => { magnifier.classList.remove("hidden"); let rect = container.getBoundingClientRect(); let x = e.pageX - rect.left; let y = e.pageY - rect.top; x = x - window.scrollX; y = y - window.scrollY; magnifier.style.transform = `translate(${x}px, ${y}px)`; const imgWidth = 400; const imgHeight = 300; magnifier.style.backgroundSize = imgWidth * getZoomLevel() + "px " + imgHeight * getZoomLevel() + "px"; magnifyX = x * getZoomLevel() + 15; magnifyY = y * getZoomLevel() + 15; magnifier.style.backgroundPosition = -magnifyX + "px " + -magnifyY + "px";});

然后向容器元素添加另一個(gè)事件偵聽器,但這一事件偵聽器應(yīng)該偵聽mouseout事件,并在鼠標(biāo)離開容器區(qū)域時(shí)hidden類添回到放大鏡元素。Oo128資訊網(wǎng)——每日最新資訊28at.com

container.addEventListener("mouseout", () => { magnifier.classList.add("hidden");});

最后,為更新光標(biāo)的x和y位置的mousmove事件向窗口對(duì)象添加事件偵聽器。Oo128資訊網(wǎng)——每日最新資訊28at.com

window.addEventListener("mousemove", (e) => { pointerX = e.clientX; pointerY = e.clientY;});

就是這樣您已成功地使用普通JavaScript構(gòu)建了一個(gè)圖像放大鏡。Oo128資訊網(wǎng)——每日最新資訊28at.com

Oo128資訊網(wǎng)——每日最新資訊28at.com

圖像放大鏡如何改善用戶體驗(yàn)

通過允許用戶放大圖像的特定區(qū)域,放大鏡可以讓他們更清晰地觀察產(chǎn)品細(xì)節(jié)。Oo128資訊網(wǎng)——每日最新資訊28at.com

這種增強(qiáng)的視覺探索水平給用戶灌輸了信心,因?yàn)樗麄兛梢宰龀雒髦堑臎Q定。這有助于提高轉(zhuǎn)化率和提高客戶保留率。Oo128資訊網(wǎng)——每日最新資訊28at.com

原文標(biāo)題:How to Build an Image Magnifier With Vanilla JavaScript,作者:DAVID UZONDUOo128資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-126-0.html如何使用JavaScript創(chuàng)建一只圖像放大鏡?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 三言兩語說透柯里化和反柯里化

下一篇: 谷歌KDD'23工作:如何提升推薦系統(tǒng)Ranking模型訓(xùn)練穩(wěn)定性

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 直屏旗艦來了 iQOO 12和K70 Pro同臺(tái)競(jìng)技

    旗艦機(jī)基本上使用的都是雙曲面屏幕,這就讓很多喜歡直屏的愛好者在苦等一款直屏旗艦,這次,你們等到了。據(jù)博主數(shù)碼閑聊站帶來的最新爆料稱,Redmi下代旗艦K70 Pro和iQOO 12兩款手
  • 7月安卓手機(jī)好評(píng)榜:三星S23Ultra好評(píng)率第一

    性能榜和性價(jià)比榜之后,我們來看最后的安卓手機(jī)好評(píng)榜,數(shù)據(jù)來源安兔兔評(píng)測(cè),收集時(shí)間2023年7月1日至7月31日,僅限國(guó)內(nèi)市場(chǎng)。第一名:三星Galaxy S23 Ultra好評(píng)率:95.71%在即將迎來新
  • 5月iOS設(shè)備好評(píng)榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個(gè)榜單又重新匯總了數(shù)據(jù),像安卓陣營(yíng)的榜單都有著比較大的變動(dòng),不過iOS由于設(shè)備的更新?lián)Q代并沒有那么快,所以相對(duì)來說變化并不大,特別是iOS好評(píng)榜,老款設(shè)
  • 從 Pulsar Client 的原理到它的監(jiān)控面板

    背景前段時(shí)間業(yè)務(wù)團(tuán)隊(duì)偶爾會(huì)碰到一些 Pulsar 使用的問題,比如消息阻塞不消費(fèi)了、生產(chǎn)者消息發(fā)送緩慢等各種問題。雖然我們有個(gè)監(jiān)控頁面可以根據(jù) topic 維度查看他的發(fā)送狀態(tài),
  • 簽約井川里予、何丹彤,單視頻點(diǎn)贊近千萬,MCN黑馬永恒文希快速崛起!

    來源:視聽觀察永恒文希傳媒作為一家MCN公司,說起它的名字來,可能大家會(huì)覺得有點(diǎn)兒陌生,但是說出來下面一串的名字之后,或許大家就會(huì)感到震驚,原來這么多網(wǎng)紅,都簽約這家公司了。根
  • 當(dāng)家的盒馬,加速謀生

    來源 | 價(jià)值星球Planet作者 | 歸去來自己&ldquo;當(dāng)家&rdquo;的盒馬,開始加速謀生了。據(jù)盒馬官微消息,盒馬計(jì)劃今年開放生鮮供應(yīng)鏈,將其生鮮商品送往食堂。目前,盒馬在上海已經(jīng)與
  • 馮提莫簽約抖音公會(huì) 前“斗魚一姐”消失在直播間

    來源:直播觀察提起&ldquo;馮提莫&rdquo;這個(gè)名字,很多網(wǎng)友或許聽過,但應(yīng)該不記得她是哪位主播了。其實(shí),作為曾經(jīng)的&ldquo;斗魚一姐&rdquo;,馮提莫在游戲直播的年代影響力不輸于現(xiàn)
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯(lián)網(wǎng)那些事&ldquo;起猛了,我能看得懂日語了&rdquo;。&ldquo;為什么日本人說話我能聽懂?&rdquo;&ldquo;中文不像中文,日語不像日語,但是我竟然看懂了&rdquo;&hellip;&hell
  • iQOO Neo8 Pro評(píng)測(cè):旗艦雙芯加持 最強(qiáng)性能游戲旗艦

    【Techweb評(píng)測(cè)】去年10月,iQOO推出了一款Neo7手機(jī),該機(jī)搭載了聯(lián)發(fā)科天璣9000+,配備獨(dú)顯芯片Pro+,帶來了同價(jià)位段最佳的游戲體驗(yàn),一經(jīng)上市便受到了諸多用
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
久久夜色精品国产欧美乱| 国产精品一区二区久久国产| 久久久噜噜噜久久中文字免| 久久琪琪电影院| 欧美国产日韩一区二区在线观看| 欧美日韩一区二区免费在线观看| 国产精品美女久久久浪潮软件 | 激情综合在线| 在线免费观看欧美| 日韩亚洲国产精品| 亚洲欧美中文另类| 蜜桃久久精品一区二区| 欧美日韩精品国产| 国产女人精品视频| 亚洲欧洲日本专区| 亚洲欧美日韩精品久久久久| 免费不卡在线观看| 国产精品黄视频| 在线播放日韩欧美| 亚洲综合好骚| 免费在线看一区| 国产精品久久久久免费a∨大胸| 国产综合精品| 日韩一级视频免费观看在线| 久久国产精品久久精品国产| 欧美高清视频| 国产情侣久久| 一道本一区二区| 欧美一级艳片视频免费观看| 免费一级欧美片在线观看| 欧美性淫爽ww久久久久无| 影音先锋久久精品| 亚洲欧美另类国产| 欧美黄色影院| 国产午夜精品理论片a级大结局| 日韩亚洲欧美成人一区| 久久精品国产亚洲高清剧情介绍| 欧美日韩裸体免费视频| 在线观看三级视频欧美| 香蕉久久国产| 欧美日韩国产123区| 很黄很黄激情成人| 欧美高清不卡在线| 国产精品嫩草久久久久| 亚洲成人在线网| 一区二区三区日韩欧美| 老鸭窝91久久精品色噜噜导演| 国产精品电影网站| 亚洲国内高清视频| 久久精品国产亚洲5555| 国产精品毛片大码女人| 亚洲三级国产| 久久亚洲综合| 国产亚洲欧洲一区高清在线观看| 夜夜嗨av色综合久久久综合网| 久久婷婷影院| 国产一区二区三区高清在线观看| 亚洲综合电影| 国产精品国产三级国产aⅴ无密码| 亚洲免费av电影| 欧美高清在线一区二区| 亚洲福利小视频| 久热精品在线视频| 精品999在线播放| 久久九九99| 好吊一区二区三区| 久久久www| 黄色成人在线| 久久婷婷国产麻豆91天堂| 国外精品视频| 久久久久国产精品麻豆ai换脸| 国产无一区二区| 欧美在线一区二区三区| 国产欧美日韩在线观看| 欧美日韩国产区一| 亚洲激情av在线| 老司机一区二区三区| 精久久久久久久久久久| 久久人人97超碰精品888| 韩国精品久久久999| 久久精品麻豆| 国产一区二区中文字幕免费看| 亚洲欧美日韩精品久久久| 欧美视频免费在线| 亚洲视频国产视频| 国产精品超碰97尤物18| 亚洲性xxxx| 国产精品久久影院| 午夜精品999| 国产精品婷婷| 亚洲成人中文| 久久综合久久综合久久综合| 狠狠色丁香婷综合久久| 久久米奇亚洲| 亚洲成人资源| 欧美精品在线一区二区| 夜夜嗨av一区二区三区免费区| 欧美日韩免费看| 亚洲一区二区三| 国产麻豆日韩欧美久久| 久久国产精品久久久久久久久久| 国内精品久久久久久 | 亚洲一区二区三区四区中文 | 久久综合伊人77777| 亚洲第一二三四五区| 欧美成人激情视频| 亚洲精品视频免费| 国产精品乱码久久久久久| 国产精品影片在线观看| 欧美一区二区视频免费观看| 国语自产精品视频在线看| 美女视频黄a大片欧美| 亚洲精品久久久久久一区二区| 欧美三级午夜理伦三级中视频| 亚洲一区久久久| 国产揄拍国内精品对白| 欧美成人精品三级在线观看| 欧美精品九九| 亚洲黄色在线| 欧美四级伦理在线| 欧美一级二区| 欧美黄在线观看| 日韩小视频在线观看专区| 国产精品拍天天在线| 久久综合导航| 这里只有精品在线播放| 国产一本一道久久香蕉| 欧美激情精品久久久久久大尺度| 亚洲小视频在线| 有码中文亚洲精品| 欧美亚日韩国产aⅴ精品中极品| 久久精品国产91精品亚洲| 91久久精品国产91久久| 国产乱码精品1区2区3区| 免费在线亚洲欧美| 亚洲欧美精品| 亚洲经典在线看| 国产美女精品免费电影| 欧美国产日韩xxxxx| 欧美一区二区视频网站| 日韩视频―中文字幕| 国产一区二区三区四区五区美女| 欧美日本韩国| 久久久久久欧美| 一区二区三区久久精品| 伊人精品成人久久综合软件| 国产精品www色诱视频| 免费观看久久久4p| 欧美一区二区三区视频在线观看| 亚洲精品中文字| 伊人精品久久久久7777| 国产精品日本| 欧美激情第二页| 久久久久久日产精品| 亚洲免费网站| 亚洲蜜桃精久久久久久久| 永久91嫩草亚洲精品人人| 国产精品入口尤物| 欧美精品一区二区三区在线看午夜| 久久成人国产精品| 亚洲一区黄色| 亚洲毛片在线看| 樱桃国产成人精品视频| 国产日韩精品入口| 国产精品国产三级国产aⅴ浪潮 | 亚洲欧美变态国产另类| 日韩天堂av| 亚洲高清免费在线| 国产在线成人| 国产精品永久在线| 国产精品国产三级国产| 欧美日韩一区不卡| 欧美电影美腿模特1979在线看| 久久久久久欧美| 久久国产精品亚洲va麻豆| 亚洲欧美精品一区| 亚洲视频一二三| 一区二区三区视频在线看| 亚洲精品国产品国语在线app| 伊人夜夜躁av伊人久久| 国产伊人精品| 国产色婷婷国产综合在线理论片a| 国产精品mm| 欧美日韩亚洲免费| 欧美日韩国产黄| 欧美理论电影在线播放| 欧美高清视频免费观看| 蜜桃伊人久久| 在线成人av| 国模叶桐国产精品一区| 国产欧美日韩在线视频| 国产精品一卡| 国产伦精品一区二区三| 国产精品网站在线播放| 国产精品嫩草影院av蜜臀| 欧美性猛交一区二区三区精品| 欧美日韩国产大片| 欧美日韩另类综合| 国产精品chinese| 国产精品女主播| 国产毛片一区| 国产亚洲一区二区三区| 国外成人在线| 亚洲国产日韩欧美在线99|