image.png

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>Document</title>
    8. <style>
    9. .img-wrap {
    10. position: relative;
    11. width: 375px;
    12. height: 500px;
    13. margin: 100px auto;
    14. border: 1px solid #ddd;
    15. box-shadow: 0 0 5px #999;
    16. }
    17. .img-wrap .mag-wrap {
    18. display: none;
    19. position: absolute;
    20. top: 0px;
    21. left: 0px;
    22. width: 150px;
    23. height: 150px;
    24. background-color: #fff;
    25. box-shadow: 0 0 3px #ccc;
    26. overflow: hidden;
    27. }
    28. .img-wrap .mag-wrap.show {
    29. display: block;
    30. transform: scale(1.5);
    31. }
    32. .img-wrap .mag-wrap .mag-img {
    33. position: absolute;
    34. top: 0;
    35. left: 0;
    36. width: 375px;
    37. height: 500px;
    38. /* border: 10px solid green; */
    39. }
    40. .img-wrap .static-img {
    41. height: 100%;
    42. }
    43. </style>
    44. </head>
    45. <body>
    46. <div class="img-wrap">
    47. <div class="mag-wrap">
    48. <img src="./img/2.jpg" class="mag-img" alt="图片1" />
    49. </div>
    50. <a href="javascript:;" class="img-lk">
    51. <img src="./img/2.jpg" class="static-img" alt="图片2" />
    52. </a>
    53. </div>
    54. <script src="./js/untils.js"></script>
    55. <script src="./js/magnifier.js"></script>
    56. </body>
    57. </html>
    window.onload = function () {
        init();
    }
    
    function init() {
        initMagnifier();
    }
    
    var initMagnifier = (function () {
        var oImgWrap = document.getElementsByClassName('img-wrap')[0],
            oMagWrap = oImgWrap.getElementsByClassName('mag-wrap')[0],
            oMagImg = oMagWrap.getElementsByClassName('mag-img')[0],
            magWidth = getStyles(oMagWrap, 'width'),
            magHeight = getStyles(oMagWrap, 'height'),
            imgX = oImgWrap.offsetLeft,
            imgY = oImgWrap.offsetTop;
    
        addEvent(oImgWrap, 'mouseover', function (e) {
            showMag(getXY(e).x, getXY(e).y);
    
            oMagWrap.className += 'show';
    
            addEvent(document, 'mousemove', mouseMove);
        });
    
        addEvent(oImgWrap, 'mouseout', mouseOut);
    
        function mouseMove(e) {
            showMag(getXY(e).x, getXY(e).y, getXY(e).mouseX, getXY(e).mouseY);
        }
    
    
        function mouseOut(e) {
            oMagWrap.className = 'mag-wrap';
            removeEvent(document, 'mousemove', mouseMove);
        }
    
        function getXY(e) {
            var e = e || window.event;
            return {
                x: pagePos(e).X - imgX - magWidth / 2,
                y: pagePos(e).Y - imgY - magHeight / 2,
                mouseX: pagePos(e).X - imgX,
                mouseY: pagePos(e).Y - imgY
            }
        }
    
        function showMag(x, y, mouseX, mouseY) {
            oMagWrap.style.left = x + 'px';
            oMagWrap.style.top = y + 'px';
            oMagImg.style.left = -x + 'px';
            oMagImg.style.top = -y + 'px';
            oMagWrap.className += ' show';
    
            if (mouseY && mouseX) {
                if (mouseX < 0 || mouseX > getStyles(oImgWrap, 'width') ||
                    mouseY < 0 || mouseY > getStyles(oImgWrap, 'height')) {
                    oMagWrap.className = 'mag-wrap';
                }
            }
        }
    });
    

    待解决问题:1.a标签的属性 是块级还是行内元素 还是行内块
    2.块级还是行内元素 行内块 的特点
    3.a标签内的图片标签设置高度为100% a标签的父级元素的宽高设置成 图片原始大小的50% 那么不设置宽度的情况下 自动设置成原始图片的宽度的50% 待试验