JS 放大鏡特效

來源:互聯網
上載者:User

標籤:nts   pac   offset   element   click   span   aci   elements   ntb   

放大鏡特效

放大鏡在商城網站經常會看到,作為前端,寫這麼一個肯定是小case,本人就獻醜了。如果沒有一點思路的同學,可以先學DOM事件裡的事件位置、距離、寬高各種方法屬性。

那麼直接上代碼,代碼裡各種注釋相當完備:

栗子代碼連結

<!doctype html><title>放大鏡</title><meta charset="utf-8"><style>  *{    margin:0;    padding:0;    list-style:none;  }    /*處理小圖的樣式*/  #small{    width:400px;    height:400px;    border:1px solid red;    position:absolute;    left:50px;    top:50px;  }    #small img{    width: 100%;    height: 100%;  }    #move{    border:1px solid yellow;    background:yellow;    position:absolute;    left:0px;    top:0px;    opacity:0.3;    display:none;  }  /*圖層蒙版*/  .mask{    width:100%;    height:100%;    position: absolute;    top:0;    left:0;  }    /*處理大圖*/  #big{    width:400px;    height:400px;    border:1px solid red;    position:absolute;    left:460px;    top:50px;    display:none;    /*超出隱藏*/    overflow:hidden;  }  #big img{    width:1000px;    height:1000px;    position:absolute;  }    /*處理點擊更換的樣式*/  #dian{    width:400px;    height:100px;    border:1px solid green;    position:absolute;    left:50px;    top:460px;  }  #dian li{    float:left;    padding:1px;  }  #dian li img{    width:98px;  }</style><!--1.先做小圖--><div id="small">  <img id="smallImg" src="image/1.jpg" >  <div id="move"></div>  <!-- 圖層蒙版 -->  <div class="mask"></div></div><!--2處理大圖 移入small 大圖顯示--><div id="big">  <img id="bigImg" src="image/1.jpg" ></div><!--3更換圖片--><ul id="dian">  <li><img src="image/1.jpg"></li>  <li><img src="image/2.jpg"></li>  <li><img src="image/3.jpg"></li>  <li><img src="image/4.jpg"></li></ul><script> var big=document.getElementById(‘big‘); var bigImg=document.getElementById(‘bigImg‘); var small=document.getElementById(‘small‘); var smallImg=document.getElementById(‘smallImg‘); var move=document.getElementById(‘move‘); var dian=document.getElementById(‘dian‘); var imgs=dian.getElementsByTagName(‘img‘); //小滑塊的寬高:// big.offsetWidth/move=bigImg.offsetWidth/smallImg.offsetWidth// move=big/(bigImg.offsetWidth/smallImg.offsetWidth)// console.log(big.offsetWidth/(bigImg.offsetWidth/smallImg.offsetWidth));    //滑鼠移入small顯示move和big,且設定move的大小    small.onmouseover = function(){    big.style.display=‘block‘;    move.style.display=‘block‘;    move.style.width = big.offsetWidth/(bigImg.offsetWidth/smallImg.offsetWidth)+ ‘px‘;    move.style.height = big.offsetHeight/(bigImg.offsetHeight/smallImg.offsetHeight) + ‘px‘;  };  //滑鼠移出隱藏move和big    small.onmouseout = function(){      big.style.display = ‘none‘;      move.style.display = ‘none‘;  };  small.onmousemove=function(e){
var e=e||window.event; //1.擷取滑鼠在small的位置 且 讓小滑塊置中 // 第一種方法: // console.log(e.clientX);//e.pageX // var x=e.clientX-small.offsetLeft - (move.offsetWidth/2); // var y=e.clientY-small.offsetTop - (move.offsetHeight/2); // // 第二種方法:添加圖層蒙版 因為e.offsetX擷取是根據在觸發元素中的所在座標 var x = e.offsetX - move.offsetWidth/2; var y = e.offsetY - move.offsetHeight/2; // console.log(y); //2移動前判斷是否超出零界點 if(x<=0){ x = 0; } if(x>=(small.offsetWidth-move.offsetWidth)){ x = small.offsetWidth-move.offsetWidth; } if(y<=0){ y = 0; } if(y>=(small.offsetHeight-move.offsetHeight)){ y = small.offsetHeight-move.offsetHeight; } //3.讓小滑塊跟著滑鼠移動 move.style.left= x + ‘px‘; move.style.top= y + ‘px‘;//parseInt 10 //4. 讓大圖跟著small裡滑塊移動的距離 1000 400 2.5 var left = - (bigImg.offsetWidth/smallImg.offsetWidth) * x; var top = - (bigImg.offsetHeight/smallImg.offsetHeight) * y; //5.把移動值賦給大圖從而定位 bigImg.style.left=left + ‘px‘; bigImg.style.top=top + ‘px‘; } //點解dian中的某一圖片,把該圖片src賦給smallImg和bigImg for(var i=0;i<imgs.length;i++){ imgs[i].onclick=function(e){ var e=e||window.event; console.log(this.src); smallImg.src=this.src; bigImg.src=this.src; } } </script>

 

 

JS 放大鏡特效

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.