| -- HTML -- <!DOCTYPE html><html>
 <head><meta charset="utf-8" />
 <meta http-equiv="X-UA-Compatible" content="IE=edge">
 <title>돋보기</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link rel="stylesheet" type="text/css" media="screen" href="css/main2.css" />
 </head>
 <body><h1>돋보기 2</h1>
 <div class="wrap">
 <img class="target" src="https://i.imgur.com/zEZCgJC.jpg" />
 </div>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><script src="js/main2.js"></script>
 </body>
 </html> -- CSS -- * {margin: 0;
 padding: 0;
 box-sizing: border-box;
 }
 h1{text-align: center;
 }
 .wrap {position: relative;
 width: 500px;
 margin: 0 auto;
 }
 .magnifier {width: 150px;
 height: 150px;
 position: absolute;
 border-radius: 100%;
 box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.85), 0 0 3px 3px rgba(0, 0, 0, 0.25);
 display: none;
 }
 .target {display: block;
 width: 100%;
 }
 -- JS -- //주의 : hTML에서 보여지는 이미지 크기가 본래 이미지 크기보다 작아야 함. ( width , height )window.onload = function () {
 $(".wrap")
 .on('mousemove', magnify)
 .prepend("<div class='magnifier'></div>")
 .children('.magnifier').css({
 "background": "url('" + $(".target").attr("src") + "') no-repeat"
 });
 
 var target = $('.target');
 var magnifier = $('.magnifier');
 
 function magnify(e) {
 
 // 마우스 위치에서 .magnify의 위치를 차감해 컨테이너에 대한 마우스 좌표를 얻는다.
 var mouseX = e.pageX - $(this).offset().left;
 var mouseY = e.pageY - $(this).offset().top;
 
 // 컨테이너 밖으로 마우스가 벗어나면 돋보기를 없앤다.
 if (mouseX < $(this).width() && mouseY < $(this).height() && mouseX > 0 && mouseY > 0) {
 magnifier.fadeIn(100);
 } else {
 magnifier.fadeOut(100);
 }
 
 //돋보기가 존재할 때
 if (magnifier.is(":visible")) {
 
 /* 이미지에 대한 마우스 포인터 아래의 픽셀 비율(본래 이미지 크기에 대한)을 얻고
 이를 사용하여 돋보기 내부에 큰 이미지를 배치한다. */
 var rx = -(mouseX / target.width() * target[0].naturalWidth - magnifier.width() / 2);
 var ry = -(mouseY / target.height() * target[0].naturalHeight - magnifier.height() / 2);
 
 //돋보기를 마우스 위치에 따라 움직인다.
 //돋보기의 width, height 절반을 마우스 좌표에서 차감해 마우스와 돋보기 위치를 일치시킨다.
 var px = mouseX - magnifier.width() / 2;
 var py = mouseY - magnifier.height() / 2;
 
 //적용
 magnifier.css({
 left: px,
 top: py,
 backgroundPosition: rx + "px " + ry + "px"
 });
 }
 }
 };
   |