原生js仿淘寶網(wǎng)商品放大鏡效果
更新時間:2017年02月28日 11:53:12 作者:chang紅達
本文主要介紹了原生js仿淘寶網(wǎng)商品放大鏡效果的實例,具有很好的參考價值,下面跟著小編一起來看下吧
效果圖:(實例圖片由自己添加)

代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>仿淘寶放大鏡特效</title>
<style type="text/css">
*{margin: 0;padding: 0;}
#demo{width:350px;height:350px;border: 1px solid #000;position:relative;margin:100px;}
#smil_box{width: 350px;height: 350px;position:relative;}
#mask{width:175px;height: 175px;background:rgba(255,255,0,0.4);position:absolute;top:0;left:0;display:none;cursor:move;}
#big_box{width: 400px;height: 400px;position:absolute;top:0;left:360px;border: 1px solid #000;overflow:hidden;display:none;}
#big_box img{position:absolute;top:0;left:0;}
</style>
</head>
<body>
<div id="demo">
<div id="smil_box">
<img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=193662baf63738c68b594f3ec920769f" height="350" width="350" alt="">
<div id="mask"></div>
</div>
<div id="big_box">
<img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=3e8b3554eb90dd13fa0f82465ac6d382" height="800" width="800" alt="" id="big_img">
</div>
</div>
</body>
<script type="text/javascript">
(function(window){
function $(id){
return document.getElementById(id);
};
// 獲取對象
var demo = $("demo"),smilBox = $("smil_box"),mask = $("mask"),bigImg = $("big_img"),bigBox = $("big_box");
// smilBox的hover事件
smilBox.onmouseover = function(){
mask.style.display = "block";
bigBox.style.display = "block";
};
smilBox.onmouseout = function(){
mask.style.display = "none";
bigBox.style.display = "none";
};
// 鼠標移動事件
smilBox.onmousemove = function(event){
var event = event || window.event;
// 獲取鼠標在頁面上的坐標
var pageX = event.pageX || event.clientX + document.documentElement.scrollLeft;
var pageY = event.pageY || event.clientY + document.documentElement.scrollTop;
// mask的位置坐標
var boxX = pageX - demo.offsetLeft;
var boxY = pageY - demo.offsetTop;
var maskX = boxX - mask.offsetWidth / 2;
var maskY = boxY - mask.offsetHeight / 2;
// 限制mask的移動范圍
if( maskX < 0 ){
maskX = 0;
};
if( maskX > smilBox.offsetWidth - mask.offsetWidth){
maskX = smilBox.offsetWidth - mask.offsetWidth;
};
if( maskY < 0 ){
maskY = 0;
};
if( maskY > smilBox.offsetHeight - mask.offsetHeight){
maskY = smilBox.offsetHeight - mask.offsetHeight;
};
// 黃色遮罩層的位置坐標
mask.style.top = maskY + "px";
mask.style.left = maskX + "px";
// 大圖片移動的比例
var prop = ( bigImg.offsetWidth - bigBox.offsetWidth ) / (smilBox.offsetWidth - mask.offsetWidth);
// 大圖片的坐標
var bigImgX = prop * maskX;
var bigImgY = prop * maskY;
bigImg.style.top = -bigImgY + "px";
bigImg.style.left = -bigImgX + "px";
}
})(window)
</script>
</html>
以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!
相關(guān)文章
js調(diào)用打印機打印網(wǎng)頁字體總是縮小一號的解決方法
直接調(diào)用window.print(),但是打印出來后,字體總是縮小一號,后來直接target="_blank",就可以正常打印了,下面是實現(xiàn)代碼2014-01-01
用js實現(xiàn)的一個根據(jù)內(nèi)容自動生成表格的函數(shù)
用js實現(xiàn)的一個根據(jù)內(nèi)容自動生成表格的函數(shù)...2007-08-08
原生JS實現(xiàn)圖片無縫滾動方法(附帶封裝的運動框架)
下面小編就為大家?guī)硪黄鶭S實現(xiàn)圖片無縫滾動方法(附帶封裝的運動框架)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10
JavaScript之DOM插入更新刪除_動力節(jié)點Java學(xué)院整理
這篇文章主要為大家詳細介紹了JavaScript之DOM插入更新刪除,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

