标签:flow lan type onload obj round content opp splay
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="UTF-8"> | |
<title></title> | |
<style type="text/css"> | |
*{ | |
margin:0px; | |
padding:0px; | |
border:0px; | |
} | |
#demo{ | |
width:800px; | |
height:800px; | |
border:1px solid red; | |
position:relative; | |
display: block; | |
margin: 50px; | |
} | |
#small-box{ | |
width:230px; | |
height:230px; | |
position:relative; | |
z-index:1111; | |
} | |
#float-box{ | |
display: none; | |
width:160px; | |
height:120px; | |
position:absolute; | |
top:0px; | |
left:0px; | |
background: #ffffcc; | |
border:1px solid red; | |
opacity: 0.5; | |
filter:alpha(opcity=50); | |
cursor:move; | |
} | |
#big-box{ | |
display: none; | |
position:absolute; | |
top:100px; | |
left:300px; | |
width:487px; | |
height:365px; | |
border:1px solid green; | |
overflow: hidden; | |
z-index:1; | |
} | |
#big-box img{ | |
position:absolute; | |
z-index: 5; | |
top:0px; | |
left:0px; | |
} | |
</style> | |
<script type="text/javascript"> | |
window.onload=function(){ | |
var objdemo=document.getElementById("demo"); | |
var objsmallbox=document.getElementById("small-box"); | |
var objfloatbox=document.getElementById("float-box"); | |
var objbigbox=document.getElementById("big-box"); | |
var objbigboximg=objbigbox.getElementsByTagName("img")[0]; | |
objsmallbox.onmouseover=function(e){ | |
e.preventDefault(); | |
e.stopPropagation(); | |
objfloatbox.style.display="block"; | |
objbigbox.style.display="block"; | |
} | |
objsmallbox.onmouseout=function(e){ | |
e.preventDefault(); | |
e.stopPropagation(); | |
objfloatbox.style.display="none"; | |
objbigbox.style.display="none"; | |
} | |
objsmallbox.onmousemove=function(e){ | |
var _ev=e; | |
var left=_ev.clientX-objdemo.offsetLeft-objsmallbox.offsetLeft-objfloatbox.offsetWidth/2 ; | |
var top=_ev.clientY-objdemo.offsetTop-objsmallbox.offsetTop-objfloatbox.offsetHeight/2; | |
if(left<0){ | |
left=0; | |
}else if(left>(objsmallbox.offsetWidth-objfloatbox.offsetWidth)){ | |
left=objsmallbox.offsetWidth-objfloatbox.offsetWidth; | |
} | |
if(top<0){ | |
top=0; | |
}else if(top>(objsmallbox.offsetHeight-objfloatbox.offsetHeight)){ | |
top=objsmallbox.offsetHeight-objfloatbox.offsetHeight; | |
} | |
// console.log(objsmallbox.offsetHeight); | |
// console.log(objfloatbox.offsetHeight); | |
objfloatbox.style.left=left+"px"; | |
objfloatbox.style.top=top+"px"; | |
var parcentX=left/(objsmallbox.offsetWidth-objfloatbox.offsetWidth); | |
var parcentY=top/(objsmallbox.offsetHeight-objfloatbox.offsetHeight); | |
console.log(parcentX) | |
console.log(parcentY) | |
console.log(objbigboximg.offsetWidth) | |
console.log(objbigboximg.offsetHeight) | |
objbigboximg.style.left=-parcentX*(objbigboximg.offsetWidth-objbigbox.offsetWidth)+"px"; | |
objbigboximg.style.top=-parcentY*(objbigboximg.offsetHeight-objbigbox.offsetHeight)+"px"; | |
} | |
} | |
</script> | |
</head> | |
<body> | |
<!--放大镜的原理:大图片移动的位置==放大镜图片移动的偏移量--> | |
<div id="demo"> | |
<div id="small-box"> | |
<div id="float-box"></div><!--放大镜盒子--> | |
<img src="img/1.jpg" /><!--小图片--> | |
</div> | |
<div id="big-box"> | |
<img src="img/1.jpg" style="width:1000px;height:1000px"/><!--大图片--> | |
</div> | |
</div> | |
</body> | |
</html> | |
标签:flow lan type onload obj round content opp splay
原文地址:http://www.cnblogs.com/huangshikun/p/6649242.html