国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

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

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

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

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

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

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

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

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

構建圖像放大鏡

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

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

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

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

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

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

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

接下來,為縮放級別、最大縮放級別以及光標和放大鏡圖像的位置設置變量。TY428資訊網——每日最新資訊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軸上的位置。TY428資訊網——每日最新資訊28at.com

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

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

接下來,創建一個updateMagImage函數,該函數使用當前光標位置創建一個新的MouseEvent對象,并將其分派給容器元素。這個函數負責更新放大鏡圖像。TY428資訊網——每日最新資訊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鍵時,可調整縮放級別。TY428資訊網——每日最新資訊28at.com

keyup事件上的回調函數還負責更新縮放級別標簽,并觸發updateMagImage函數。TY428資訊網——每日最新資訊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事件容器元素添加事件偵聽器。TY428資訊網——每日最新資訊28at.com

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

該函數還應該將放大鏡的變換樣式設置為計算位置,并根據縮放級別和鼠標位置確定放大鏡圖像的背景大小和位置。TY428資訊網——每日最新資訊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類添回到放大鏡元素。TY428資訊網——每日最新資訊28at.com

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

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

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

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

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

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

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

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • 2023 年的 Node.js 生態系統

    隨著技術的不斷演進和創新,Node.js 在 2023 年達到了一個新的高度。Node.js 擁有一個龐大的生態系統,可以幫助開發人員更快地實現復雜的應用。本文就來看看 Node.js 最新的生
  • 之家push系統迭代之路

    前言在這個信息爆炸的互聯網時代,能夠及時準確獲取信息是當今社會要解決的關鍵問題之一。隨著之家用戶體量和內容規模的不斷增大,傳統的靠"主動拉"獲取信息的方式已不能滿足用
  • JavaScript學習 -AES加密算法

    引言在當今數字化時代,前端應用程序扮演著重要角色,用戶的敏感數據經常在前端進行加密和解密操作。然而,這樣的操作在網絡傳輸和存儲中可能會受到惡意攻擊的威脅。為了確保數據
  • 共享單車的故事講到哪了?

    來源丨??素斀浥c共享充電寶相差不多,共享單車已很久沒有被國內熱點新聞關照到了。除了一再漲價和用戶直呼用不起了。近日多家媒體再發報道稱,成都、天津、鄭州等地多個共享單
  • 得物寵物生意「狂飆」,發力“它經濟”

    作者|花花小萌主近日,得物宣布正式上線寵物鑒別,通過得物App內的&ldquo;在線鑒別&rdquo;,可找到鑒別寵物的選項。通過上傳自家寵物的部位細節,就能收獲擁有專業資質認證的得物鑒
  • 猿輔導與新東方的兩種“歸途”

    作者|卓心月 出品|零態LT(ID:LingTai_LT)如何成為一家偉大企業?答案一定是對&ldquo;勢&rdquo;的把握,這其中最關鍵的當屬對企業戰略的制定,且能夠站在未來看現在,即使這其中的
  • 網紅炒股不為了賺錢,那就是耍流氓!

    來源:首席商業評論6月26日高調宣布入市,網絡名嘴大v胡錫進居然進軍了股市。在一次財經媒體峰會上,幾個財經圈媒體大佬就&ldquo;胡錫進炒股是否知道認真報道&rdquo;展開討論。有
  • 國行版三星Galaxy Z Fold5/Z Flip5發布 售價7499元起

    2023年8月3日,三星電子舉行Galaxy新品中國發布會,正式在國內推出了新一代折疊屏智能手機三星Galaxy Z Fold5與Galaxy Z Flip5,以及三星Galaxy Tab S9
  • 回歸OPPO兩年,一加贏了銷量,輸了品牌

    成為OPPO旗下主打性能的先鋒品牌后,一加屢創佳績。今年618期間,一加手機全渠道銷量同比增長362%,憑借一加 11、一加 Ace 2、一加 Ace 2V三款爆品,一加
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
aa国产精品| 亚洲在线黄色| 国产精品一二三区| 午夜激情综合网| 一区二区三区色| 亚洲日本青草视频在线怡红院| 久久久久久99精品| 久久久久久久av麻豆果冻| 国产亚洲自拍一区| 久久蜜桃一区二区| 精品国产一区二区三区不卡 | 久久精品人人做人人综合| 日韩精品中文字幕一区二区三区| 欧美日韩一区精品| 欧美日韩电影一区| 亚洲精品在线观| 国产视频911| 国产精品久久久久久久第一福利| 中文字幕在线不卡视频| 亚洲品质自拍视频| 亚洲6080在线| 久久精品国产999大香线蕉| 麻豆精品视频在线观看视频| 国产乱码精品一区二区三区av| 国产精品亚洲成人| 99精品国产99久久久久久白柏 | 欧美性一二三区| 91精品免费在线| 国产亚洲综合性久久久影院| 综合久久国产九一剧情麻豆| 亚洲男人的天堂av| 青青草成人在线观看| 国产精品性做久久久久久| 欧美在线三区| 一区二区国产日产| 欧美视频第二页| 久久久精品欧美丰满| 亚洲欧美电影院| 日本特黄久久久高潮| 国产suv精品一区二区三区| 99在线视频精品| 一区精品久久| 色美美综合视频| 精品日韩一区二区三区免费视频| 国产精品色噜噜| 喷水一区二区三区| 成人一区二区在线观看| aa级大片欧美三级| 91麻豆精品国产自产在线观看一区| 久久久无码精品亚洲日韩按摩| 亚洲综合一二区| 成人免费视频视频| 亚洲一区二区三区免费观看 | 亚洲欧洲在线观看av| 麻豆精品在线观看| 狠狠综合久久| 在线免费视频一区二区| 国产精品久线在线观看| 日本麻豆一区二区三区视频| 91在线精品一区二区三区| 国产视频一区三区| 久久网站最新地址| 热久久免费视频| 在线国产精品一区| 91精品婷婷国产综合久久| 亚洲一区二区免费视频| jlzzjlzz欧美大全| 美女日韩在线中文字幕| 国产欧美一区视频| 国产精品一区二区三区四区| 中国成人在线视频| 国产亚洲欧美一级| 国产一区二区视频在线播放| 国产精品日本| 久久久久久久久久久久久女国产乱| 日韩中文字幕麻豆| 亚洲最黄网站| 色综合久久精品| 国产精品污污网站在线观看| 久久精品理论片| 国产欧美日韩综合一区在线观看 | 久久久五月婷婷| 精品一区二区三区久久久| 亚洲精华国产欧美| 国产精品日韩成人| 在线不卡免费av| 图片区小说区国产精品视频| 亚洲精品日本| 国产精品入口麻豆九色| 99精品视频一区| 日韩精品中文字幕一区二区三区| 精品亚洲国产成人av制服丝袜| 欧美亚洲专区| 亚洲精品中文在线| 国产精品二区三区四区| 国产亚洲女人久久久久毛片| 精品一区二区影视| 91在线精品一区二区| 一区二区三区成人| 91视频精品在这里| 精品少妇一区二区三区视频免付费| 国产精品一二三四五| 欧美精品一级二级| 精品亚洲成a人| 欧美高清性hdvideosex| 国产老肥熟一区二区三区| 欧美剧在线免费观看网站| 精品一区二区在线观看| 欧美日韩www| 国产成人免费av在线| 3atv在线一区二区三区| 福利91精品一区二区三区| 欧美一区二区黄色| 国产成人精品一区二区三区四区 | 午夜亚洲一区| 亚洲成人先锋电影| 久久这里有精品15一区二区三区| 丝袜美腿亚洲综合| 欧美色男人天堂| 国产精品一区在线| 欧美mv和日韩mv的网站| 欧美精品综合| 亚洲另类在线制服丝袜| 亚洲在线国产日韩欧美| 免费高清视频精品| 欧美一区二区三区四区视频| 成人av在线一区二区| 国产精品国产自产拍在线| 国产精品久久久久久模特| 三级欧美在线一区| 91精品视频网| 激情综合自拍| 亚洲18影院在线观看| 欧美日产国产精品| 91免费视频大全| 亚洲综合一二区| 91麻豆精品国产自产在线 | 奇米色一区二区三区四区| 日韩精品一区二区三区三区免费| 91小视频在线免费看| 亚洲综合在线视频| 欧美年轻男男videosbes| 欧美高清一区| 日韩二区在线观看| 精品国内二区三区| 9久re热视频在线精品| 精品写真视频在线观看| 国产精品毛片大码女人| 91国产丝袜在线播放| 欧美福利网址| 毛片一区二区三区| 欧美激情自拍偷拍| 在线视频一区二区免费| 欧美色欧美亚洲另类七区| 日韩avvvv在线播放| 久久久亚洲精品一区二区三区 | 亚洲激情六月丁香| 9191久久久久久久久久久| 国产精品多人| 国产麻豆日韩欧美久久| 亚洲欧美另类小说| 日韩视频免费直播| 欧美主播一区二区三区美女 久久精品人| 国产一区二区精品久久99| 亚洲视频 欧洲视频| 日韩一二三区视频| 国产精品日本欧美一区二区三区| 不卡的电影网站| 人人狠狠综合久久亚洲| 自拍偷拍欧美激情| 欧美成人艳星乳罩| 一本大道av一区二区在线播放| 欧美激情成人在线| 国产精品88av| 欧美日韩夫妻久久| 亚洲精品国产系列| 精品亚洲国内自在自线福利| 亚洲欧洲日韩在线| 日韩欧美国产精品| 免费日韩视频| 亚洲精品乱码久久久久久蜜桃91| 国产不卡视频在线播放| 欧美aaaaa成人免费观看视频| 国产精品成人免费精品自在线观看 | 亚洲另类中文字| 欧美激情在线看| 欧美变态凌虐bdsm| 欧美日韩大陆一区二区| 91久久久免费一区二区| 99pao成人国产永久免费视频| 91美女在线看| 国产v日产∨综合v精品视频| 紧缚奴在线一区二区三区| 午夜视频在线观看一区二区 | 国产一区日韩二区欧美三区| 国产精品久久久久久久蜜臀| 精品国产一区二区三区av性色| 欧美色图12p| 久久精品99| 久久国产精品高清|