html實現商品圖片放大鏡,html圖片放大鏡預覽

效果

在這里插入圖片描述

實現

復制粘貼,修改圖片路徑即可使用

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>商品圖片放大鏡</title></head><style>body {margin: 0;padding: 0;}#app {padding: 10px;position: relative;}/** 默認圖片*/.img-box {position: relative;left: 10px;top: 150px;width: 300px;height: 300px;text-align: center;border: 1px solid #83b4ff;border-radius: 4px;overflow: hidden;cursor: zoom-in;}.img1 {width: 100%;height: 100%;}.img-select {width: 100px;height: 100px;position: absolute;left: 0;top: 0;background: #00ff6633;border-radius: 4px;display: none;}/** 臨時放大圖片*/.img-temp-box {position: absolute;left: 0;top: 0;width: 400px;height: 400px;display: none;overflow: hidden;}.img2 {width: 200%;height: 200%;position: absolute;left: 0;top: 0;}</style><body><div id="app"><div class="img-box"><img src="image/2.jpeg" class="img1" /><div class="img-select"></div></div></div><!-- 一般放置最外邊--><div class="img-temp-box"><img src="" class="img2" /></div></body><script>/*** @author yyq* @blogger myf*/var imgBox = document.querySelector('.img-box');var imgSelect = document.querySelector('.img-select');var imgTempBox = document.querySelector('.img-temp-box');var img1 = document.querySelector('.img1');var img2 = document.querySelector('.img2');// 鼠標移入imgBox.onmouseenter = function() {imgSelect.style.display = 'block';imgTempBox.style.display = 'block';var img = getElementOffset(imgBox);imgTempBox.style.left = (img.left + 400) + "px";imgTempBox.style.top = (img.top - 50) + "px";img2.src = img1.src;console.log("移入")}// 鼠標移除imgBox.onmouseleave = function() {imgSelect.style.display = 'none';imgTempBox.style.display = 'none';console.log("移除")}// 鼠標放上imgBox.onmousemove = function() {var img = getElementOffset(imgBox);var x = event.clientX - img.left;var y = event.clientY - img.top;console.log("xy軸:", x, '-----', y);var imgSelectX = x - imgSelect.offsetWidth / 2var imgSelectY = y - imgSelect.offsetHeight / 2if(imgSelectX < 0) {imgSelectX = 0;} else if(imgSelectX > imgBox.offsetWidth - imgSelect.offsetWidth) {imgSelectX = imgBox.offsetWidth - imgSelect.offsetWidth}if(imgSelectY < 0) {imgSelectY = 0;} else if(imgSelectY > imgBox.offsetHeight - imgSelect.offsetHeight) {imgSelectY = imgBox.offsetHeight - imgSelect.offsetHeight}// 小圖里的小框imgSelect.style.left = imgSelectX + 'px';imgSelect.style.top = imgSelectY + 'px';var b = (img2.offsetHeight - imgTempBox.offsetHeight) / (imgBox.offsetHeight - imgSelect.offsetHeight)// 臨時框里的大圖片img2.style.left = -imgSelectX * b + "px"img2.style.top = -imgSelectY * b + "px"}/*** 返回元素距離瀏覽器邊框的位置(防止元素位置被父級限制)* @param {Object} element*/function getElementOffset(element) {    var left = element.offsetLeft; // 當前元素左邊距var top = element.offsetTop; // 當前元素上邊距var parent = element.offsetParent; // 當前元素的父級元素while(parent !== null) {      left += parent.offsetLeft; // 累加左邊距top += parent.offsetTop; // 累加上邊距parent = parent.offsetParent; // 依次獲取父元素}return {'left': left,'top': top};  }</script></html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36276.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

關于青少年學習演講與口才對未來的領導力的塑造的探析

標題&#xff1a;青少年學習演講與口才對未來領導力的塑造&#xff1a;一項探析 摘要&#xff1a; 本論文旨在探討青少年學習演講與口才對未來領導力的塑造的重要性和影響。通過分析演講和口才對青少年的益處&#xff0c;以及如何培養這些技能來促進領導力的發展&#xff0c;我…

Harmony創建項目ohpm報錯

Harmony創建FA模型的項目時報如下錯&#xff1a; The registry is empty - edit .ohpmrc file or use "ohpm config set registry your_registry" command to set registry.解決方法&#xff1a; File -> Settings -> Build,Execution,Deployment -> Ohpm …

機器學習基礎(五)

決策樹 決策樹是一種預測模型,它代表著對象屬屬性與對象值之間的一種映射關系。樹中的每個節點代表一個對象,分叉路徑(或者叫樹枝)則代表一個屬性值。 決策樹常用方法: 分類樹分析,是一種監督學習,用于預計結果可能為離散類型。 回歸樹分析,用于預計結果為實數。 CART,…

Mysql事務及其隔離機制/隔離級別

mysql事務特性是什么&#xff1f; 原子性(atomicity)&#xff1a;一個事務必須視為一個不可分割的最小工作單元&#xff0c;整個事務中的所有操作要么全部提交成功&#xff0c;要么全部失敗回滾&#xff0c;對于一個事務來說&#xff0c;不可能只執行其中的一部分操作&#xf…

docker可視化工具Portainer

1:Portainer簡介 Portainer是一個docker可視化管理工具&#xff0c;可以非常方便地管理docker鏡像容器。官網地址&#xff1a;https://www.portainer.io/ 注&#xff1a;現在Portainer有BE&#xff08;收費&#xff09;和CE&#xff08;免費&#xff09;版本&#xff0c;安裝的…

【音視頻、chatGpt】h5頁面最小化后,再激活后視頻停住問題的解決

目錄 現象 觀察 解決 現象 頁面有時候要切換&#xff0c;要最小化&#xff1b;短時間或者幾個小時內切換回來&#xff0c;視頻可以正常續上&#xff1b;而放置較長時間&#xff0c;幾個小時或者一晚上&#xff0c;切換回來后&#xff0c;視頻可能卡死 觀察 切換頁面&#x…

【解讀Spikingjelly】使用單層全連接SNN識別MNIST

原文檔&#xff1a;使用單層全連接SNN識別MNIST — spikingjelly alpha 文檔 代碼地址&#xff1a;完整的代碼位于activation_based.examples.lif_fc_mnist.py GitHub - fangwei123456/spikingjelly: SpikingJelly is an open-source deep learning framework for Spiking Neur…

【自用】終端設備(ESP32-S3)連接云服務器 HomeAssistant + MQTT 物聯網平臺

總覽 1.流程概述 2.開始搭建&#xff01; 3. 一、流程概述 0.總體流程 二、開始搭建 1.下載 MQTTX 客戶端&#xff08; 在PC上 &#xff09; https://mqttx.app/zh/downloads 2.新建 MQTTX 連接 0.點擊左側的加號&#xff0c;開始新建連接。 一共需要填寫幾個參數&#…

會玩這 10 個 Linux 命令,一定是個有趣的 IT 男!

Linux當中有很多比較有趣的命令&#xff0c;可以動手看看&#xff0c;很簡單的。 1.rev命令 一行接一行地顛倒所輸入的字符串。 運行&#xff1a; $rev如輸入&#xff1a;shiyanlou shiyanlou2.asciiview命令 1.先安裝aview $sudo apt-get install aview2.再安裝imagema…

vue中封裝自動計算比例滑塊

此插件為另一位漂亮的前端同事小姐姐封裝,覺得非常好用于是決定記載下來,便于復用 如圖需要動態傳入需要分配權重的數組,平均分配可以自動將100%平均分給數組中的值 如果手動拖拽,則會自動計算可拖動最大區域,便于最終總權重必定為100% <el-alert class"merge-alert&…

zookeeper常用命令

zookeeper常用命令 1. 下載安裝2. 配置說明2.1 配置 3. zookeeper的常見命令3.1 server端啟動停止等命令3.2 客戶端連接等命令3.3 客戶端簡單常用命令3.3.1 查看目錄&#xff08;查看數據結構&#xff09;3.3.2 刪除目錄3.3.3 創建目錄3.3.4 創建目錄并寫入值 查看節點值3.3.5…

Apache JMeter:完全指南

Apache JMeter 是一款開源的性能測試工具&#xff0c;可以用于測試 Web 應用程序、FTP 服務器、數據庫等各種類型的服務器。本文將以 JMeter 5.5 為例介紹 JMeter 的使用方法。 下載和安裝 由于 JMeter 是使用 Java 開發的&#xff0c;因此在運行之前必須先安裝 JDK。您可以在…

Android中tools屬性的使用

參考&#xff1a; 1.Android:Tools命名空間原來是有大用處的 2.Android中tools屬性的使用 3.工具屬性參考文檔 4. 命名空間介紹 5. 注解 6. lint 7. 資源壓縮shrink-resources 目錄 一、概述二、引入tools命名空間三、tools 命名空間的作用有哪些&#xff1f;四、tools 命名空間…

年薪6.5萬美元|生物醫學老師獲美國耶魯大學博士后職位

I老師就職于雙非二本院校&#xff0c;希望通過出國研修以提升科研背景&#xff0c;在公派訪學和申請導師出資的博士后之間&#xff0c;其選擇了后者。最終我們落實了美國耶魯大學的職位&#xff0c;頭銜為Associate Research Scientist&#xff08;副研究科學家&#xff09;&am…

Selenium 自動化 | 案例實戰篇

Chrome DevTools 簡介 Chrome DevTools 是一組直接內置在基于 Chromium 的瀏覽器&#xff08;如 Chrome、Opera 和 Microsoft Edge&#xff09;中的工具&#xff0c;用于幫助開發人員調試和研究網站。 借助 Chrome DevTools&#xff0c;開發人員可以更深入地訪問網站&#xf…

Observability:識別生成式 AI 搜索體驗中的慢速查詢

作者&#xff1a;Philipp Kahr Elasticsearch Service 用戶的重要注意事項&#xff1a;目前&#xff0c;本文中描述的 Kibana 設置更改僅限于 Cloud 控制臺&#xff0c;如果沒有我們支持團隊的手動干預&#xff0c;則無法進行配置。 我們的工程團隊正在努力消除對這些設置的限制…

uniapp動態底部tab欄

實現思路&#xff1a; 創建一個js文件用來存放所有的tabbar,不同的數組表示不同的tabbar組合。 創建一個vue文件用來制作底部tabbar組件。 使用vuex存儲用戶的身份信息,根據身份信息切換tabbar組合。 具體步驟&#xff1a; 新建一個tabbar.js文件&#xff0c;將…

SpringBoot 整合MyBatis

整合MyBatis 官方文檔&#xff1a;http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/ Maven倉庫地址&#xff1a;https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.3 整合測試 導入 MyBatis 所需要的…

數據結構筆記--優先隊列(大小根堆)經典題型

1--項目的最大利潤 題目描述&#xff1a; 輸入&#xff1a;正數數組 costs&#xff0c;costs[i] 表示項目 i 的花費&#xff1b;正數數組 profits&#xff0c;profits[i] 表示項目 i 的花費&#xff1b;正數 k 表示只能串行完成最多 k 個項目&#xff1b;m 表示擁有的資金&…

MySQL事務:確保數據完整性與并發性的關鍵

MySQL事務&#xff1a;確保數據完整性與并發性的關鍵 MySQL作為一種廣泛使用的開源關系型數據庫管理系統&#xff0c;具備強大的事務支持&#xff0c;以確保數據庫操作的一致性、隔離性和持久性。本文將深入探討MySQL中的事務概念、事務隔離級別以及事務的應用場景&#xff0c…