精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

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

譯文
開發(fā) 前端
如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到過圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗。

譯者 | 布加迪

審校 | 重樓

如果您曾經(jīng)瀏覽過購物網(wǎng)站,可能遇到圖像放大功能。它可以讓您放大圖像的特定區(qū)域,以便瀏覽。結(jié)合這個小小的重要功能可以大大改善您網(wǎng)站的用戶體驗。

一種無縫銜接的方式構(gòu)建圖像放大鏡可能是個挑戰(zhàn)。但是逐步完成這些步驟將幫助您從頭開始創(chuàng)建自己的圖像放大鏡,無需依賴第三方插件。

何時在Web項目中使用圖像放大鏡

當您構(gòu)建有很多圖像的項目時,圖像放大鏡派上用場。如前所述,圖像放大鏡在購物網(wǎng)站上很受歡迎,因為有時用戶可能需要在決定是否值得購買之前仔細觀察產(chǎn)品。

客戶完全依賴網(wǎng)站提供的信息和視覺效果來評估產(chǎn)品的質(zhì)量、功能和外觀。然而,光靠靜態(tài)圖像可能并不總是提供足夠的清晰度或便于全面評估產(chǎn)品

在傳統(tǒng)商店里,顧客可以親自觸摸產(chǎn)品,近距離仔細觀察,并評估適用性之后決定購買。圖像放大鏡試圖通過以虛擬方式為用戶提供一種相似的審查和檢查來重現(xiàn)這種體驗。

如果您正在構(gòu)建一個照片庫應用程序,圖像放大鏡也派上用場,因為放大圖像的特定部分是一重要功能。

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

該項目中使用的代碼放在GitHub代碼倉庫中,可供人們免費使用,采用MIT許可證。

創(chuàng)建一個文件夾,在該文件夾中添加index.html文件、style.css文件和main.js文件。將這個樣板代碼添加到index.html中

<!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標簽中,創(chuàng)建一個類名為header”的div元素。然后在headerdiv中,添加h1標題元素來顯示圖像放大鏡的標題。

您可以根據(jù)需要來定制文本。接下來,包括兩個span元素,它們提供使用放大鏡的說明,并向用戶顯示當前縮放級別。

在標題部分之后,創(chuàng)建一個類名為container”的div元素。在這個div中,添加另一個類名為magnifier”的div元素,并運用“hidden類將其隱藏起來

這個元素將表示放大鏡圖像。然后,添加一個script標簽,src屬性設(shè)置為/main.js

<body>
 <div 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>

 <div class="container">
 <div class="magnifier hidden"></div>
 </div>

 <script src="/main.js"></script>
</body>

把style.css文件中的代碼換成以下代碼。需要的話,您還可以使用Less之類的CSS預處理器。

: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;
}

div > span:nth-child(3) {
 font-size: 20px;

在main.js文件中,使用document.querySelector方法檢索帶有類名放大鏡容器”的HTML元素并將它們分別賦予給變量magnifier和變量container。

然后,使用getComputedStyle函數(shù)檢索放大鏡元素的寬度和高度,然后使用substring和indexOf方法從返回的字符串中提取數(shù)值。

將提取的寬度賦予變量magnifierWidth,將提取的高度賦予變量magnifierHeight。

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")
);

接下來,為縮放級別、最大縮放級別以及光標和放大鏡圖像的位置設(shè)置變量。

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

在上面的代碼塊中,pointerX和pointerY都表示光標在X和Y軸上的位置。

現(xiàn)在,定義兩個輔助函數(shù)getZoomLevel返回當前縮放級別和getPointerPosition返回帶有光標x坐標和y坐標的對象

function getZoomLevel() {
 return zoom;
}

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

接下來,創(chuàng)建一個updateMagImage函數(shù),該函數(shù)使用當前光標位置創(chuàng)建一個新的MouseEvent對象,并將其分派給容器元素。這個函數(shù)負責更新放大鏡圖像。

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

 container.dispatchEvent(evt);
}

現(xiàn)在,您應該為keyup事件的窗口對象添加一個事件偵聽器,當用戶按下ArrowUpArrowDown鍵時,可調(diào)整縮放級別。

keyup事件上的回調(diào)函數(shù)還負責更新縮放級別標簽并觸發(fā)updateMagImage函數(shù)。

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事件容器元素添加事件偵聽器。

在回調(diào)函數(shù)中,添加從放大鏡元素中移除hidden類以使其可見的功能,并計算鼠標相對容器的位置,考慮到頁面滾動。

該函數(shù)還應該將放大鏡的變換樣式設(shè)置為計算位置,并根據(jù)縮放級別和鼠標位置確定放大鏡圖像的背景大小和位置。

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事件,并在鼠標離開容器區(qū)域時hidden類添回到放大鏡元素。

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

最后,為更新光標的x和y位置的mousmove事件向窗口對象添加事件偵聽器。

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

就是這樣您已成功地使用普通JavaScript構(gòu)建了一個圖像放大鏡。

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

通過允許用戶放大圖像的特定區(qū)域,放大鏡可以讓他們更清晰地觀察產(chǎn)品細節(jié)。

這種增強的視覺探索水平給用戶灌輸了信心,因為他們可以做出明智的決定。這有助于提高轉(zhuǎn)化率和提高客戶保留率。

原文標題:How to Build an Image Magnifier With Vanilla JavaScript,作者:DAVID UZONDU

責任編輯:華軒 來源: 51CTO
相關(guān)推薦

2012-05-30 10:43:47

jQuery

2017-01-22 17:25:55

Android放大鏡效果源碼分析

2011-09-08 17:50:34

Windows7放大鏡

2012-06-15 10:33:06

JavaScript

2015-03-10 11:36:25

jQuery仿淘寶產(chǎn)品圖片放大鏡代碼

2021-08-23 15:10:52

GNOME雙重繪制桌面

2014-02-19 11:12:35

2010-09-30 11:17:22

2019-10-30 15:27:28

Google谷歌Alphabet

2022-10-18 22:20:36

CSS矩形border

2015-04-15 10:29:38

Linux 4.0

2017-11-15 12:57:57

爬蟲爬取數(shù)據(jù)分析

2009-11-24 09:31:38

2013-04-22 09:46:37

軟件項目開發(fā)

2015-07-28 17:28:15

程序員技能

2022-03-02 09:40:26

微軟Windows 8ASCII 貓

2016-05-19 13:44:53

云計算大數(shù)據(jù)

2017-09-12 12:13:57

夢想 咸魚

2023-05-11 08:00:00

JavaScript柱狀圖

2018-02-05 10:43:16

旅行青蛙
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲综合自拍网| 男人c女人视频| 亚洲一区二区色| 牛夜精品久久久久久久99黑人| 精品国产一区二区亚洲人成毛片| 国产成人无码精品久久久性色| 成人网视频在线观看| 国产综合色在线视频区| 国产做受69高潮| 日本精品在线观看视频| 一区二区三区国产好| 日韩欧美国产中文字幕| 中文字幕欧美日韩一区二区| 人成网站在线观看| 日韩精品一区第一页| 欧美大奶子在线| 91成人在线免费视频| 视频在线亚洲| 欧美日韩高清一区二区不卡| 99在线精品免费视频| 男人天堂久久久| 97aⅴ精品视频一二三区| 91精品久久久久久久久久入口| 91精品国产乱码久久久张津瑜| 999国产精品视频| 亚洲精品黄网在线观看| 欧美在线a视频| 欧美人体一区二区三区| 亚洲激情一二三区| 亚洲精品一区二区三| 日本在线视频1区| 成人免费毛片app| 国产欧美日韩精品在线观看 | 琪琪久久久久日韩精品| 欧美精品成人一区二区三区四区| 无码人妻丰满熟妇区毛片18| 成年人国产在线观看| 国产精品福利在线播放| 欧美污视频久久久| 先锋av资源站| 成人听书哪个软件好| 91国产在线免费观看| 国产一区二区三区成人| 美女视频网站久久| 国产激情综合五月久久| 亚洲欧美偷拍视频| 国产日韩欧美一区在线| 久久久免费观看| 国产一级片视频| 欧美激情 亚洲a∨综合| 久久国产精品久久国产精品| 美国黄色片视频| 日韩精品水蜜桃| 深夜福利一区二区| 久久一级免费视频| 日本午夜一区| 日韩在线免费观看视频| 国产jizz18女人高潮| 久久一本综合| 精品国内产的精品视频在线观看| 日韩一区二区三区四区视频| 久久国产小视频| 久久视频在线免费观看| 日本少妇高清视频| 亚洲色图网站| 久久久人成影片一区二区三区观看 | 一区二区三区日韩在线观看| 正在播放一区二区三区| 欧美三级黄网| 亚洲精品国久久99热| 日本高清xxxx| av老司机免费在线| 色欧美乱欧美15图片| 欧美午夜性生活| 亚洲欧美一级| 亚洲国产精彩中文乱码av在线播放| 欧美xxxx×黑人性爽| 天堂网av成人| 中文字幕久久亚洲| 国产精品老熟女一区二区| 一区在线免费| 国产精品99一区| 国产乱码一区二区| 不卡在线视频中文字幕| 蜜桃视频在线观看91| √新版天堂资源在线资源| 亚洲女与黑人做爰| 国产伦精品一区二区三区四区视频_| 日韩电影大全网站| 4438x亚洲最大成人网| 年下总裁被打光屁股sp| 国产最新精品| 欧美成人午夜影院| 久久久黄色大片| 国精产品一区一区三区mba桃花| 丁香婷婷久久久综合精品国产 | 久久―日本道色综合久久| 亚洲福利av在线| av午夜在线观看| 欧美日韩国产精品成人| 性高潮免费视频| 成人高清电影网站| 久久久久久久久久久91| 国产美女www爽爽爽| 国产91精品在线观看| 欧美一级爱爱| 欧美精品videossex少妇| 在线精品国精品国产尤物884a| 男男受被啪到高潮自述| 亚洲成人一品| 欧美丰满老妇厨房牲生活| 成人a v视频| 床上的激情91.| 亚洲一区bb| 麻豆视频在线看| 欧美一级免费大片| 欧美激情久久久久久久| 亚洲美女91| 亚洲最大福利网站| 成年人在线看| 欧美性生活大片免费观看网址| 欧美激情第四页| 成人精品亚洲| 91av在线播放视频| 亚洲第一免费视频| 国产精品国产自产拍在线| 精品久久久久久久免费人妻| 91成人福利| 久久99久久99精品中文字幕 | 久久精品国产免费| 日本一区高清不卡| 亚洲欧洲美洲av| 亚洲精品国产精品国自产观看浪潮| 日日骚一区二区三区| 看国产成人h片视频| 日韩国产在线一区| 性感美女一区二区在线观看| 亚洲激情中文字幕| 精品无码人妻一区二区三区品| 国产一二精品视频| 日本一区二区免费高清视频| 婷婷丁香久久| 色999日韩欧美国产| 中文字幕人妻精品一区| 久久精品男人天堂av| 日本女优爱爱视频| 精品国产91久久久久久浪潮蜜月| 国产ts人妖一区二区三区| 天堂资源中文在线| 欧美视频专区一二在线观看| 自拍视频一区二区| 国产亚洲在线观看| 美国av一区二区三区| 一本大道色婷婷在线| 日韩经典一区二区三区| 国产精品第二十页| 91亚洲精品久久久蜜桃网站| 欧美成人一区二区在线观看| 亚洲+变态+欧美+另类+精品| 国产91精品久久久| 国产乱视频在线观看| 欧美在线观看一区| 国产午夜精品福利视频| 久久激情综合网| 男女h黄动漫啪啪无遮挡软件| 精品国产不卡一区二区| 欧美黄色小视频| 婷婷伊人综合中文字幕| 色综合色综合色综合色综合色综合 | 欧美特黄不卡| 国模视频一区二区三区| 亚洲 欧美 激情 小说 另类| 日韩欧美国产黄色| 91成人精品一区二区| 国产尤物一区二区| 国产一二三在线视频| 亚洲区小说区图片区qvod按摩| 国产精品成熟老女人| 国产视频中文字幕在线观看| 精品国产一区二区三区av性色| 国产专区第一页| 欧美高清在线一区| 日本特黄在线观看| 日韩香蕉视频| 一区二区视频国产| 成人激情自拍| 国产精品国产三级国产aⅴ浪潮 | 欧美gayvideo| 国产精品美女xx| 午夜av成人| 欧美福利在线观看| 毛片免费在线| 日韩美女视频在线| 日本视频网站在线观看| 中文字幕一区二区三区不卡在线| 成人啪啪18免费游戏链接| 香蕉成人久久| 波多野结衣与黑人| 国产成人调教视频在线观看| 91亚洲va在线va天堂va国| 亚洲永久av| 久久99精品久久久久久琪琪| 国产精品久久久久久久龚玥菲 | 国产精品激情自拍| 污污的视频在线观看| 亚洲网站在线播放| 国精产品乱码一区一区三区四区| 欧美在线999| 日韩不卡视频在线| 一区二区在线观看av| av电影网站在线观看| 国产成人免费网站| 久久99999| 性娇小13――14欧美| 99热这里只有精品免费| 欧美电影一二区| 欧美久久电影| 日韩成人午夜| 国产伦精品一区二区三区四区免费| 欧美成人毛片| 国产精品第二页| 在线观看v片| 午夜欧美不卡精品aaaaa| 国产黄色在线免费观看| 国产一区二区三区在线观看网站| 天堂在线观看视频| 日韩欧美在线123| 97国产精品久久久| 欧美色成人综合| 无码人妻精品一区二| 婷婷六月综合网| 国产系列精品av| 一区二区三区在线看| 东方av正在进入| 亚洲欧洲国产日本综合| 国产视频123区| 中文文精品字幕一区二区| 色欲av无码一区二区三区| 99精品视频在线观看| 中文字幕人妻一区| 懂色av一区二区三区免费看| 老女人性生活视频| 韩国v欧美v日本v亚洲v| 99re6在线观看| 国产中文一区二区三区| 亚洲高清av一区二区三区| 九九精品视频在线看| 日本中文字幕观看| 精品写真视频在线观看 | 国产精品久一| 亚洲精品免费在线视频| 精品一区二区三区中文字幕在线| 91在线视频成人| 911亚洲精品| 狠狠久久综合婷婷不卡| 免费福利视频一区| 欧美日韩国产免费一区二区三区| 国产欧美日韩一区二区三区四区| 日韩精品不卡| 欧美xxxx中国| 无码人妻精品一区二区蜜桃百度| 欧美视频官网| 久久久久久久久久久99| 久久综合影音| 一女二男3p波多野结衣| 国产在线视频精品一区| 国产av一区二区三区传媒| 99久久精品99国产精品 | 欧美一区二区黄片| 日韩av在线电影网| 二区三区在线| 不卡av电影在线观看| 9999在线视频| 国产精品久久久久久超碰| 日韩黄色三级在线观看| 91精品免费| 日韩精品亚洲aⅴ在线影院| 日本黄网免费一区二区精品| 99久久精品费精品国产风间由美| 男女裸体影院高潮| 亚洲影音先锋| 三级性生活视频| www..com久久爱| 久久久久99精品成人| 亚洲最大色网站| 波多野结衣日韩| 91精品国产一区二区三区蜜臀 | 美女福利视频一区| 乡村艳史在线观看| 成人欧美在线观看| 色婷婷狠狠五月综合天色拍| 亚洲午夜精品国产| 亚洲精品男同| 涩多多在线观看| 91天堂素人约啪| 少妇高潮在线观看| 狠狠躁天天躁日日躁欧美| www.久久视频| 亚洲国产精品电影在线观看| av免费观看一区二区| 国内精品久久久久久久久| 久久久加勒比| 欧美国产二区| 亚洲大黄网站| 亚洲天堂一区二区在线观看| 国产亚洲精品精华液| 亚洲一区二区91| 777亚洲妇女| 春暖花开成人亚洲区| 韩国福利视频一区| 91久久青草| 先锋影音亚洲资源| 翔田千里一区二区| 香蕉在线观看视频| 国产精品国产自产拍在线| 亚洲婷婷综合网| 亚洲精品久久7777777| 自由的xxxx在线视频| 国产精品亚洲片夜色在线| 日本成人7777| www在线观看免费| 成人精品国产福利| 99精品久久久久| 制服丝袜中文字幕亚洲| www亚洲人| 国产99视频在线观看| 网友自拍区视频精品| 分分操这里只有精品| 国产白丝网站精品污在线入口| 五月天色婷婷丁香| 欧美网站一区二区| 国产视频在线看| 国产成人精品免高潮在线观看| 婷婷成人影院| 欧美日韩亚洲一| 91一区二区三区在线播放| 日韩免费不卡视频| 亚洲精品aⅴ中文字幕乱码 | 国产日韩在线观看av| 青青草国产成人a∨下载安卓| 牛夜精品久久久久久久| 国产精品欧美极品| 亚洲中文字幕在线观看| www.欧美免费| 国产色99精品9i| 成人国产在线看| www.亚洲精品| 黑人一级大毛片| 亚洲欧洲日韩国产| 欧美色片在线观看| 亚洲欧美日韩精品在线| 久久99精品国产91久久来源| 日韩在线一卡二卡| 欧美一区二区三区在线观看| av在线free| 国产精品美女黄网| 免费亚洲一区| 精品国产aaa| 欧美一级淫片007| 丁香高清在线观看完整电影视频 | 午夜日本精品| 伦理片一区二区| 欧美色视频日本版| 极品白浆推特女神在线观看| 国产精品一区二区三区久久久| 91精品久久久久久久蜜月| 国产情侣久久久久aⅴ免费| 欧美日韩亚洲一区二区| 成人免费黄色网页| 91亚洲国产精品| 最新日韩欧美| 欧美色图亚洲激情| 欧美伊人久久大香线蕉综合69| 午夜视频在线观看免费视频| 成人黄色av播放免费| 欧洲亚洲成人| 一区二区三区 日韩| 136国产福利精品导航| 懂色av蜜臀av粉嫩av分享吧| 日本一欧美一欧美一亚洲视频| 成人毛片免费看| av影片在线播放| 欧美午夜久久久| 久草资源在线| 国产精品一区二区免费看| 久久精品导航| 永久av免费网站| 亚洲精品在线视频| 日韩制服一区| 亚洲精品一区国产精品| 成人动漫一区二区| 无码人妻一区二区三区线 | 四季久久免费一区二区三区四区| 精品在线观看一区二区| 日本vs亚洲vs韩国一区三区 | 精品av久久久久电影| 少妇av片在线观看| 欧美mv日韩mv国产| 成人在线不卡| 女人被男人躁得好爽免费视频 |