用js實(shí)現(xiàn)圖片放大鏡效果

很多電商網(wǎng)站比如:京東、天貓、淘寶都有放大鏡效果,每當(dāng)看到心儀的物品時,鼠標(biāo)移入圖片時,便呈現(xiàn)出放大的效果。在沒有去理解分析它的原理時,感覺非常的神奇,當(dāng)真正地去接觸,也是非常好理解。如下圖展示所見:


邏輯分析:

1. 有2個圖片(大圖、小圖),圖片之間都有很好尺寸比例

2. 鼠標(biāo)移入小圖這里事件采用onmousemove事件,移入后顯示陰影部分以及右側(cè)大圖

3. 當(dāng)鼠標(biāo)移出則隱藏陰影部分以及右側(cè)大圖

4. 鼠標(biāo)在小圖移動,陰影部分跟隨采用clientX和clientY的位移

5. 鼠標(biāo)在小圖部分左邊移動,大圖向右,剛好相反并且*其比例尺寸就是大圖要移動的位置

代碼實(shí)現(xiàn):

<!DOCTYPE?html>

<html>

<head>

????<meta?charset="UTF-8">

????<title>Title</title>

</head>

<style>

????*{margin:0;padding:?0}

????#box{

????????width:1200px;

????????height:?700px;

????????border:1px?solid?#ccc;

????????margin:150px;

????}

????#min{

????????float:left;

????????width:400px;

????????height:?400px;

????????position:?relative;

????}

????b{

????????position:?absolute;

????????left:0;

????????top:0;

????????width:200px;

????????height:?200px;

????????background:?blue;

????????opacity:?0.5;

????????display:?none;

????}

????#max{

????????float:right;

????????width:400px;

????????height:?400px;

????????overflow:?hidden;

????????display:?none;

????????position:?relative;

????}

????#imgs{

????????position:?absolute;

????????left:0;

????????top:0;


????}

</style>

<body?style="height:?2000px">

<div?id="box">

????<div?id="min"><img?src="imgs/min.jpg"?alt=""><b></b></div>

????<div?id="max"><img?src="imgs/max.jpg"?alt=""?id="imgs"></div>

</div>

<script?type="text/javascript">

//1》鼠標(biāo)移入到min這個盒子中,顯示出來?放大圖片的盒子和小陰影部分

//2》陰影跟隨鼠標(biāo)移動====》

var?min?=?document.getElementById("min"),

????max?=?document.getElementById("max"),

????b?=?document.getElementsByTagName("b")[0],

????imgs?=?document.getElementById("imgs");

min.onmousemove?=?function(e){

????b.style.display?=?"block";

????max.style.display?=?"block";

????var?scrollLeft?=?document.body.scrollLeft?||?document.documentElement.scrollLeft;

????var?scrollTop?=?document.body.scrollTop?||?document.documentElement.scrollTop;

????var?x?=?e.clientX+scrollLeft-min.offsetLeft-?b.offsetWidth/2;

????var?y?=?e.clientY+scrollTop-min.offsetTop?-?b.offsetHeight/2;

????if(x<0){

????????x=0;

????}else?if(x>min.offsetWidth-b.offsetWidth){

????????x=min.offsetWidth-b.offsetWidth;

????}

????if(y<0){

????????y=0;

????}else?if(y>min.offsetHeight-b.offsetHeight){

???????y=min.offsetHeight-b.offsetHeight;

????}

????b.style.left?=x+"px";

????b.style.top?=y+"px";

????imgs.style.left?=?-2*x+"px";

????imgs.style.top?=?-2*y+"px";

}

min.onmouseout?=?function(){

????b.style.display?=?"none";

????max.style.display?=?"none";

}

</script>

</body>

</html>

原文:https://www.3mooc.com/front/articleinfo/148

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容