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

當前位置:首頁 > 科技  > 軟件

如何使用JavaScript創建一只圖像放大鏡?

來源: 責編: 時間:2023-08-05 11:45:41 4792觀看
導讀譯者 | 布加迪審校 | 重樓如果您曾經瀏覽過購物網站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗。以一種無縫銜接的方式構建圖像放大鏡可能

譯者 | 布加迪M1L28資訊網——每日最新資訊28at.com

審校 | 重樓M1L28資訊網——每日最新資訊28at.com

如果您曾經瀏覽過購物網站,可能遇到圖像放大功能。它可以讓您放大圖像的特定區域,以便瀏覽。結合這個小小的重要功能可以大大改善您網站的用戶體驗。M1L28資訊網——每日最新資訊28at.com

M1L28資訊網——每日最新資訊28at.com

如果您正在構建一個照片庫應用程序,圖像放大鏡也派上用場,因為放大圖像的特定部分是一重要功能。M1L28資訊網——每日最新資訊28at.com

構建圖像放大鏡

該項目中使用的代碼放在GitHub代碼倉庫中,可供人們免費使用,采用MIT許可證。M1L28資訊網——每日最新資訊28at.com

創建一個文件夾,在該文件夾中添加index.html文件、style.css文件和main.js文件。將這個樣板代碼添加到index.html中M1L28資訊網——每日最新資訊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標簽中,創建一個類名為header”的div元素。然后在headerdiv中,添加h1標題元素來顯示圖像放大鏡的標題。M1L28資訊網——每日最新資訊28at.com

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

在標題部分之后,創建一個類名為container”的div元素。在這個div中,添加另一個類名為magnifier”的div元素,并運用“hidden類將其隱藏起來M1L28資訊網——每日最新資訊28at.com

這個元素將表示放大鏡圖像。然后,添加一個script標簽,src屬性設置為/main.jsM1L28資訊網——每日最新資訊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預處理器。M1L28資訊網——每日最新資訊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。M1L28資訊網——每日最新資訊28at.com

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

將提取的寬度賦予變量magnifierWidth,將提取的高度賦予變量magnifierHeight。M1L28資訊網——每日最新資訊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"));

接下來,為縮放級別、最大縮放級別以及光標和放大鏡圖像的位置設置變量。M1L28資訊網——每日最新資訊28at.com

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

在上面的代碼塊中,pointerX和pointerY都表示光標在X和Y軸上的位置。M1L28資訊網——每日最新資訊28at.com

在,定義兩個輔助函數getZoomLevel返回當前縮放級別和getPointerPosition返回帶有光標x坐標和y坐標的對象M1L28資訊網——每日最新資訊28at.com

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

接下來,創建一個updateMagImage函數,該函數使用當前光標位置創建一個新的MouseEvent對象,并將其分派給容器元素。這個函數負責更新放大鏡圖像。M1L28資訊網——每日最新資訊28at.com

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

現在,您應該為keyup事件的窗口對象添加一個事件偵聽器,當用戶按下ArrowUpArrowDown鍵時,可調整縮放級別。M1L28資訊網——每日最新資訊28at.com

keyup事件上的回調函數還負責更新縮放級別標簽并觸發updateMagImage函數。M1L28資訊網——每日最新資訊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(); }});

然后針對“mousemove事件容器元素添加事件偵聽器。M1L28資訊網——每日最新資訊28at.com

在回調函數中,添加從放大鏡元素中移除hidden類以使其可見的功能,并計算鼠標相對容器的位置,考慮到頁面滾動。M1L28資訊網——每日最新資訊28at.com

該函數還應該將放大鏡的變換樣式設置為計算位置,并根據縮放級別和鼠標位置確定放大鏡圖像的背景大小和位置。M1L28資訊網——每日最新資訊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";});

然后向容器元素添加另一個事件偵聽器,但這一事件偵聽器應該偵聽mouseout事件,并在鼠標離開容器區域時hidden類添回到放大鏡元素。M1L28資訊網——每日最新資訊28at.com

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

最后,為更新光標的x和y位置的mousmove事件向窗口對象添加事件偵聽器。M1L28資訊網——每日最新資訊28at.com

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

就是這樣您已成功地使用普通JavaScript構建了一個圖像放大鏡。M1L28資訊網——每日最新資訊28at.com

M1L28資訊網——每日最新資訊28at.com

圖像放大鏡如何改善用戶體驗

通過允許用戶放大圖像的特定區域,放大鏡可以讓他們更清晰地觀察產品細節。M1L28資訊網——每日最新資訊28at.com

這種增強的視覺探索水平給用戶灌輸了信心,因為他們可以做出明智的決定。這有助于提高轉化率和提高客戶保留率。M1L28資訊網——每日最新資訊28at.com

原文標題:How to Build an Image Magnifier With Vanilla JavaScript,作者:DAVID UZONDUM1L28資訊網——每日最新資訊28at.com

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

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

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

下一篇: 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
性做久久久久久久久| 欧美亚洲一区二区在线| 亚洲国产你懂的| 99视频一区二区三区| 亚洲欧美韩国| 久久免费99精品久久久久久| 欧美成人精品在线观看| 欧美视频三区在线播放| 国产午夜精品一区二区三区视频 | 欧美日韩中文字幕在线| 国产欧美日韩不卡| 亚洲国产小视频在线观看| 亚洲素人在线| 久久亚洲精品伦理| 欧美日韩综合在线| 精品福利免费观看| 一区二区免费看| 久久精品亚洲一区二区| 欧美日韩视频第一区| 国产一区在线视频| 一区二区高清视频| 久久一区二区精品| 国产精品羞羞答答xxdd| 最新精品在线| 久久er99精品| 欧美三级电影网| 在线精品亚洲| 性久久久久久久| 欧美精品videossex性护士| 国产欧美精品日韩精品| 亚洲精品影院| 久久婷婷亚洲| 国产女主播一区二区| 亚洲美女免费精品视频在线观看| 久久九九免费| 国产精品无码专区在线观看| 亚洲精品小视频| 久久久噜噜噜久久狠狠50岁| 国产精品伦一区| 亚洲美女色禁图| 久久综合影音| 国产日韩欧美三区| 在线中文字幕一区| 欧美激情第一页xxx| 狠狠干综合网| 欧美一级片一区| 国产精品va| 日韩一级免费观看| 欧美大片在线看| 一区在线观看视频| 欧美一区二区三区视频免费播放| 欧美日韩午夜激情| 亚洲精品久久久久久久久久久久久 | 午夜精品久久久久久久| 欧美日韩国产小视频| 亚洲国产片色| 免费视频一区二区三区在线观看| 国外成人性视频| 欧美一区免费| 国产欧美日韩亚洲精品| 亚洲欧美欧美一区二区三区| 欧美日韩综合另类| 亚洲每日更新| 欧美精品二区| 亚洲日本在线观看| 欧美国产日韩在线| 亚洲激情在线播放| 久久在线免费观看视频| 黄色成人免费网站| 久久久青草婷婷精品综合日韩 | 久久aⅴ国产紧身牛仔裤| 国产精品一区二区三区久久久| 亚洲一区二区毛片| 国产精品久99| 午夜国产精品视频免费体验区| 国产精品三级久久久久久电影| 亚洲一区国产精品| 欧美午夜免费电影| 亚洲一区二区少妇| 国产精品嫩草99av在线| 亚洲欧美不卡| 国产日韩欧美精品| 久久九九电影| 亚洲承认在线| 欧美国产在线视频| 日韩视频在线观看国产| 欧美日韩亚洲国产精品| 亚洲一级网站| 国产欧美一区二区三区久久| 欧美一区二区三区视频| 国语自产在线不卡| 麻豆av一区二区三区| 亚洲国产精品久久久| 欧美黄色一区二区| 一区二区三区四区五区精品视频| 国产精品国产亚洲精品看不卡15| 午夜精品视频在线观看| 国一区二区在线观看| 欧美xart系列高清| 一本色道精品久久一区二区三区 | 亚洲人体一区| 欧美视频在线观看 亚洲欧| 亚洲永久视频| 国产在线日韩| 欧美成人a视频| 一本色道久久99精品综合| 国产精品久久久久久久浪潮网站| 香蕉尹人综合在线观看| 狠狠色综合一区二区| 欧美成人日本| 亚洲一级影院| 国内一区二区在线视频观看| 你懂的国产精品| 在线天堂一区av电影| 国产亚洲精品aa午夜观看| 美女爽到呻吟久久久久| 亚洲深夜av| 国产在线欧美日韩| 欧美极品一区| 午夜在线视频观看日韩17c| 一区精品久久| 欧美日韩久久不卡| 久久国产精品网站| 亚洲美女精品成人在线视频| 国产精品一页| 欧美国产日韩一区二区三区| 亚洲伊人网站| 亚洲第一中文字幕| 国产精品高清免费在线观看| 久久激情视频久久| 日韩视频精品| 国产一区亚洲| 欧美日精品一区视频| 久久男人资源视频| 亚洲网站视频| 亚洲国产裸拍裸体视频在线观看乱了| 国产精品theporn| 免费久久99精品国产自在现线| 亚洲午夜精品在线| 亚洲第一精品福利| 国产精品推荐精品| 欧美国产丝袜视频| 欧美专区中文字幕| 一本色道久久综合亚洲精品按摩 | 禁断一区二区三区在线 | 亚洲人成网站777色婷婷| 国产精品一区二区久久久| 欧美大成色www永久网站婷| 午夜性色一区二区三区免费视频| 亚洲国产免费| 国产一区二区三区日韩| 欧美视频一区二区三区四区| 久久综合伊人| 欧美诱惑福利视频| 一区二区三区四区精品| 亚洲高清av| 国产一区二区| 国产精品乱码一区二三区小蝌蚪| 欧美大片免费| 久久亚洲风情| 欧美一区二区三区精品| 中国av一区| 亚洲精品黄色| 在线观看免费视频综合| 国产欧美日韩精品丝袜高跟鞋| 欧美日韩在线播放三区| 欧美电影免费观看高清| 久久久久免费视频| 午夜亚洲激情| 亚洲一级二级| 一本色道**综合亚洲精品蜜桃冫 | 一区二区激情小说| 亚洲国产精品一区二区第一页| 国产亚洲在线观看| 国产精品成人观看视频国产奇米| 欧美高清视频一二三区| 久久五月激情| 久久久久免费视频| 久久激情综合| 午夜精品视频在线| 亚洲午夜性刺激影院| 99re这里只有精品6| 亚洲日韩欧美一区二区在线| 在线精品亚洲一区二区| 一区二区三区在线观看欧美| 国产亚洲在线观看| 国产精品一区二区在线观看| 国产精品久久久久7777婷婷| 欧美日韩一区三区| 欧美日韩亚洲一区三区| 欧美日韩一区二区三区四区在线观看| 欧美金8天国| 欧美精品成人91久久久久久久| 欧美电影资源| 欧美国产日韩一区二区三区| 欧美刺激性大交免费视频| 欧美成人精品在线视频| 欧美肥婆在线| 欧美久久电影| 欧美视频一二三区| 国产精品手机视频| 国产日韩欧美高清| 韩曰欧美视频免费观看| 极品尤物久久久av免费看|