• {
      margin: 0;
      padding: 0;
      }

      .box1 {
      position: relative;
      float: left;
      margin: 60px 0;
      width: 500px;
      border: 4px solid plum;
      }

      .box1 img {
      width: 100%;
      }

      .mask {
      display: none;
      position: absolute;
      top: 0;
      left: 0;
      width: 120px;
      height: 120px;
      background: rgba(255, 81, 0, 0.5);
      }

      .box2 {
      display: none;
      position: relative;
      float: left;
      width: 700px;
      height: 400px;
      margin: 20px;
      border: 4px solid plum;
      overflow: hidden;
      }

      .box2 img {
      position: absolute;
      top: 0;
      left: 0;
      }



    NO.9 - 图1



    NO.9 - 图2

    1. <script><br /> var box1 = document.querySelector('.box1'); //小盒子<br /> var box2 = document.querySelector('.box2'); //大盒子<br /> var mask = document.querySelector('.mask'); //遮罩<br /> var imgMax = document.querySelector('.imgmax'); //大图片<br /> //鼠标移入小盒子,显示遮罩和大盒子<br /> box1.onmouseover = function() {<br /> box2.style.display = 'block';<br /> mask.style.display = 'block';
    2. //遮罩随鼠标移动<br /> window.onmousemove = function(e) {<br /> //获取鼠标在盒子内的位置<br /> var mousex = e.pageX - box1.offsetLeft;<br /> var mousey = e.pageY - box1.offsetTop;<br /> //遮罩移动,且鼠标位于遮罩中间<br /> var maskx = mousex - mask.offsetWidth / 2;<br /> var masky = mousey - mask.offsetHeight / 2;<br /> //遮罩不能超出小盒子,最大移动距离为小盒子宽高-遮罩宽高<br /> maskx = maskx < 0 ? 0 : maskx;<br /> maskx = maskx > box1.clientWidth - mask.clientWidth ? box1.clientWidth - mask.clientWidth : maskx;<br /> masky = masky < 0 ? 0 : masky;<br /> masky = masky > box1.clientHeight - mask.clientHeight ? box1.clientHeight - mask.clientHeight : masky;<br /> mask.style.left = maskx + 'px';<br /> mask.style.top = masky + 'px';
    3. //大盒子图片移动,按比例移动,遮罩在小盒子内和大图片在大盒子内<br /> var imgx = -maskx * (imgMax.offsetWidth - box2.offsetWidth) / (box1.offsetWidth - mask.offsetWidth);<br /> var imgy = -masky * (imgMax.offsetHeight - box2.offsetHeight) / (box1.offsetHeight - mask.offsetHeight);<br /> imgMax.style.left = imgx + 'px';<br /> imgMax.style.top = imgy + 'px';<br /> };<br /> };<br /> //鼠标移出小盒子,隐藏遮罩和大盒子<br /> box1.onmouseout = function() {<br /> box2.style.display = 'none';<br /> mask.style.display = 'none';<br /> };<br /> </script>