簡體   English   中英

從圖像中移除放大鏡

[英]Removing magnifying glass from image

添加了在按鈕單擊時添加放大鏡(.img-magnifier-glass)的功能。 現在我想通過單擊“取消”按鈕取下玻璃。 我對如何編寫此函數以與“放大”函數一起使用感到困惑。

我試圖創建一個添加類的函數,該類將是“.img-magnifier-glass”上的“display:none”。

 function magnify(imgID, zoom) { var img, glass, w, h, bw; img = document.getElementById(imgID); /*create magnifier glass:*/ glass = document.createElement("DIV"); glass.setAttribute("class", "img-magnifier-glass"); /*insert magnifier glass:*/ img.parentElement.insertBefore(glass, img); /*set background properties for the magnifier glass:*/ glass.style.backgroundImage = "url('" + img.src + "')"; glass.style.backgroundRepeat = "no-repeat"; glass.style.backgroundSize = (img.width * zoom) + "px " + (img.height * zoom) + "px"; bw = 3; w = glass.offsetWidth / 2; h = glass.offsetHeight / 2; /*execute a function when someone moves the magnifier glass over the image:*/ glass.addEventListener("mousemove", moveMagnifier); img.addEventListener("mousemove", moveMagnifier); /*and also for touch screens:*/ glass.addEventListener("touchmove", moveMagnifier); img.addEventListener("touchmove", moveMagnifier); function moveMagnifier(e) { var pos, x, y; /*prevent any other actions that may occur when moving over the image:*/ e.preventDefault(); /*get the cursor's x and y positions:*/ pos = getCursorPos(e); x = pos.x; y = pos.y; /*prevent the magnifier glass from being positioned outside the image:*/ if (x > img.width - (w / zoom)) { x = img.width - (w / zoom); } if (x < w / zoom) { x = w / zoom; } if (y > img.height - (h / zoom)) { y = img.height - (h / zoom); } if (y < h / zoom) { y = h / zoom; } /*set the position of the magnifier glass:*/ glass.style.left = (x - w) + "px"; glass.style.top = (y - h) + "px"; /*display what the magnifier glass "sees":*/ glass.style.backgroundPosition = "-" + ((x * zoom) - w + bw) + "px -" + ((y * zoom) - h + bw) + "px"; } function getCursorPos(e) { var a, x = 0, y = 0; e = e || window.event; /*get the x and y positions of the image:*/ a = img.getBoundingClientRect(); /*calculate the cursor's x and y coordinates, relative to the image:*/ x = e.pageX - a.left; y = e.pageY - a.top; /*consider any page scrolling:*/ x = x - window.pageXOffset; y = y - window.pageYOffset; return { x: x, y: y}; } } function onClick() { magnify("img1", 1.5); magnify("img2", 1.5); magnify("img4", 1.5); }
 <div> <div class="slideshow-container"> <button onclick = "onClick()" id="btn1" type="button" class="btn"> Zoom In</button> <button onclick = "zoomOut()" id= "btn2" type= "button" class="btn" >Cancel</button> <div class="img-magnifier-container mySlides"> <img id = "img1" src="img1.jpg" width="800" height="600"> </div> <div class="img-magnifier-container mySlides"> <img id = "img2" src="img2.jpg" width="800" height="600" > </div> <div class="img-magnifier-container mySlides"> <img id = "img4" src="img4.jpg" width="800" height="600"> </div> </div>

您需要找到添加的元素並刪除它們。 由於縮放腳本為它們提供了img-magnifier-glass所有類名,因此您可以執行以下操作:

function zoomOut() {
   var zooms = document.querySelectorAll(".img-magnifier-glass");
   for(var x=0;x<zooms.length;x++) {
      zooms[x].parentNode.removeChild(zooms[x]);
   }
}

我已經這樣做了! 感謝您的縮小功能。

這是我的外部 JScript

 function magnify(imgID, zoom) { var img, glass, w, h, bw; img = document.getElementById(imgID); /* Create magnifier glass: */ glass = document.createElement("DIV"); glass.setAttribute("class", "img-magnifier-glass"); /* Insert magnifier glass: */ //img.parentElement.hidden(glass, img); img.parentElement.insertBefore(glass, img); /* Set background properties for the magnifier glass: */ glass.style.backgroundImage = "url('" + img.src + "')"; glass.style.backgroundRepeat = "no-repeat"; glass.style.backgroundSize = (img.width * zoom) + "px " + (img.height * zoom) + "px"; bw = 3; w = glass.offsetWidth / 2; h = glass.offsetHeight / 2; /* Execute a function when someone moves the magnifier glass over the image: */ glass.addEventListener("mousemove", moveMagnifier); img.addEventListener("mousemove", moveMagnifier); /*and also for touch screens:*/ glass.addEventListener("touchmove", moveMagnifier); img.addEventListener("touchmove", moveMagnifier); function moveMagnifier(e) { var pos, x, y; /* Prevent any other actions that may occur when moving over the image */ e.preventDefault(); /* Get the cursor's x and y positions: */ pos = getCursorPos(e); x = pos.x; y = pos.y; /* Prevent the magnifier glass from being positioned outside the image: */ if (x > img.width - (w / zoom)) {x = img.width - (w / zoom);} if (x < w / zoom) {x = w / zoom;} if (y > img.height - (h / zoom)) {y = img.height - (h / zoom);} if (y < h / zoom) {y = h / zoom;} /* Set the position of the magnifier glass: */ glass.style.left = (x - w) + "px"; glass.style.top = (y - h) + "px"; /* Display what the magnifier glass "sees": */ glass.style.backgroundPosition = "-" + ((x * zoom) - w + bw) + "px -" + ((y * zoom) - h + bw) + "px"; } function getCursorPos(e) { var a, x = 0, y = 0; e = e || window.event; /* Get the x and y positions of the image: */ a = img.getBoundingClientRect(); /* Calculate the cursor's x and y coordinates, relative to the image: */ x = e.pageX - a.left; y = e.pageY - a.top; /* Consider any page scrolling: */ x = x - window.pageXOffset; y = y - window.pageYOffset; return {x : x, y : y}; } } function zoomOut() { var zooms = document.querySelectorAll(".img-magnifier-glass"); for(var x=0;x<zooms.length;x++) { zooms[x].parentNode.removeChild(zooms[x]); } }

我使用了 W3Schools [https://www.w3schools.com/howto/howto_js_image_magnifier_glass.asp][1] 中的步驟

在我的 Html 文件中,我使用一個開關來顯示多個圖像:

 function showmob(mob) { document.getElementById("mymob").className = "img_show"; switch (mob) { case "mob1": document.getElementById("mymob").src="iphone12.jpg"; zoomOut(); magnify("mymob", 3); break; case "mob2": document.getElementById("mymob").src="samsung.jpg"; zoomOut(); magnify("mymob", 3); break; case "mob3": document.getElementById("mymob").src="p40.jpg"; zoomOut(); magnify("mymob", 3); break; case "mob4": document.getElementById("mymob").src="xiaomiRedmi.jpg"; zoomOut(); magnify("mymob", 3); break; } }
還有在 HTML 中

 <tr> <td>iphone 12 </td> <td>128 GB </td> <td>TrueDepth </td> <td>LiDAR</td> <td>IOS 14 </td> <td>1.229,00 € </td> <td><button class="iconbtn" onclick="showmob('mob1')"><i class="fa fa-eye" ></i></button></td> </tr> <tr> <td>samsung galaxy s20 </td> <td>128 GB </td> <td>40MP</td> <td>108MP(f1.8/PDAF) + 48MP(f3.5) + 12MP(f2.2) </td> <td>ANDROID 11 </td> <td>1.399,00 € </td> <td><button class="iconbtn" onclick="showmob('mob2')"><i class="fa fa-eye" ></i></button></td> </tr> <tr> <td>huawei P40 </td> <td>256 GB </td> <td>32 MP </td> <td>50 + 40 + 12 + 3D Tof M </td> <td>ANDROID 11 </td> <td>899,00 </td> <td><button class="iconbtn" onclick="showmob('mob3')"><i class="fa fa-eye" ></i></button></td> </tr>

再次感謝。 我試圖分發我的解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM