This article mainly introduces the simple magnifying glass effect implemented by native JavaScript, involving implementation techniques related to javascript event response and dynamic operation of page element attributes. Friends in need can refer to it
The examples in this article describe the implementation of native JavaScript simple magnifying glass effect. Share it with everyone for your reference, the details are as follows:
Principle: In fact, the so-called enlargement is to prepare two identical pictures, except for the different sizes. Moving the mouse to different positions will display the image content corresponding to the large image.
Complete code:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>放大镜效果</title> </head> <body> <p id="wrap" style="position: relative;width: 900px;margin: 0 auto;text-align: center;"> <p id="smallImg" style="width: 400px;height: 400px; position: relative;z-index: 1;"> <img src="small.jpg" style="width: 400px;height: 400px;"/> <span id="filter" style="width: 200px;height: 200px;background-color: blue;opacity: 0.1;position: absolute;top: 0;left: 0; z-index: 2;cursor: move;display: none;"> <span> </p> <p id="bigImg" style="width: 400px;height: 400px;overflow: hidden;position: absolute;right: 0px;top: 0;display: none;"> <img src="large.jpg" style="width: 800px;height:800px; position: absolute;left: 0;top: 0;"> </p> </p> <script type="text/javascript"> var filter = document.getElementById('filter'); var smallImg = document.getElementById('smallImg'); var bigImg = document.getElementById('bigImg'); var wrap = document.getElementById('wrap'); var largeImgs = bigImg.getElementsByTagName('img')[0]; smallImg.onmouseover = function(){ bigImg.style.display = "inline-block"; filter.style.display = "inline-block"; } smallImg.onmousemove = function(event){ var event = event || window.event; var mouseleft = event.clientX - wrap.offsetLeft; var mousetop = event.clientY - wrap.offsetTop; var left = mouseleft<smallImg.offsetWidth/4?0:mouseleft>smallImg.offsetWidth*3/4?smallImg.offsetWidth/2:(mouseleft - filter.offsetWidth/2); var top = mousetop<smallImg.offsetHeight/4?0:mousetop>smallImg.offsetHeight*3/4?smallImg.offsetHeight/2:(mousetop - filter.offsetWidth/2); filter.style.left = left + "px"; filter.style.top = top +"px"; largeImgs.style.left = "-" + left*bigImg.offsetWidth/smallImg.offsetWidth + "px"; largeImgs.style.top = "-" + top*bigImg.offsetHeight/smallImg.offsetHeight + "px"; } smallImg.onmouseout = function(){ bigImg.style.display = "none"; filter.style.display = "none"; } </script> </body> </html>
Operation effect:
The above is what I compiled for everyone. I hope that in the future It will be helpful to everyone.
Related articles:
About the use of Material in Angular2 (detailed tutorial)
How to implement a circular Nodelist Dom list using JS
How to achieve text color change after click in Vue
The above is the detailed content of Using native JavaScript to achieve a magnifying glass effect. For more information, please follow other related articles on the PHP Chinese website!