案例:放大镜特效
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>放大镜</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
list-style: none;
}
#box{
width: 350px;
height: 350px;
background-color: red;
margin: 100px 0 0 100px;
}
#small{
position: relative;
width: 100%;
height: 100%;
border: 1px solid #ccc;
box-sizing: border-box;
}
#small img{
width: 100%;
height: 100%;
}
#mask{
width: 100px;
height: 100px;
background-color: rgba(255,255,50,0.4);
position: absolute;
left: 0;
top: 0;
cursor: move;
display: none;
}
#big{
width: 550px;
height: 550px;
border: 1px solid #CCCCCC;
position: absolute;
left: 480px;
top: 100px;
display: none;
overflow: hidden;
}
#big img{
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
}
#list{
margin-left: 20px;
}
ul li{
float: left;
margin: 20px;
cursor: pointer;
}
</style>
</head>
<body>
<div id="box">
<div id="small">
<img src="image/pic001.jpg">
<span id="mask"></span>
</div>
<div id="big">
<img src="image/pic01.jpg">
</div>
<div id="list">
<ul>
<li><img src="image/pic0001.jpg"></li>
<li><img src="image/pic0002.jpg"></li>
<li><img src="image/pic0003.jpg"></li>
</ul>
</div>
</div>
<script src="工具/Tool.js"></script>
<script>
window.onload = function (ev) {
var box = Tool.$('box');
var small = Tool.$('small');
var big = Tool.$('big');
var mask = Tool.$('mask');
var bimg = big.children[0];
var allli = Tool.$('list').getElementsByTagName('li');
small.onmouseover = function (ev1) {
mask.style.display = 'block';
big.style.display = 'block';
small.onmousemove = function (ev11) {
var e = ev11 || window.event;
var x = e.pageX - box.offsetLeft - mask.offsetWidth / 2;
var y = e.pageY - box.offsetTop - mask.offsetHeight / 2;
if (x < 0){
x = 0;
}
else if (x > box.offsetWidth - mask.offsetWidth - 2){
x = box.offsetWidth - mask.offsetWidth - 2;
}
if (y < 0){
y = 0;
}
else if (y > box.offsetHeight - mask.offsetHeight - 2){
y = box.offsetHeight - mask.offsetHeight - 2;
}
mask.style.left = x + 'px';
mask.style.top = y + 'px';
bimg.style.left = - (x * big.offsetWidth / small.offsetWidth) + 'px';
bimg.style.top = -(x * big.offsetHeight / small.offsetHeight) + 'px';
}
};
small.onmouseout = function (ev1) {
mask.style.display = 'none';
big.style.display = 'none';
};
for ( var i = 0; i < allli.length; i++){
(function (i) {
var li = allli[i];
li.onmouseover = function () {
small.children[0].src = 'image/pic00' + (i+1) + '.jpg';
bimg.src = 'image/pic0' + (i+1) + '.jpg';
}
})(i)
}
}
</script>
</body>
</html>