放大镜2

<!DOCTYPE html>

<html>


<head>

<meta charset="UTF-8">

<title></title>

<style type="text/css">

.min{

width: 350px;

height: 350px;

border: 1px solid black;

float: left;

position: relative;

}

.max{

width: 350px;

height: 350px;

border: 1px solid black;

float: left;

display: none;

overflow: hidden;

position: relative;

}

.max img{

position: absolute;

}

.fd{

width: 150px;

height: 150px;

background-color: skyblue;

opacity: 0.3;

position: absolute;

left: 0;

top: 0;

display: none;

}

</style>

</head>


<body>

<div class="min">

<img src="img/x.jpg" />

<div class="fd"></div>

</div>

<div class="max">

<img src="img/d.jpg" />

</div>

<script type="text/javascript">

var Min = document.getElementsByClassName("min")[0];

var Max = document.getElementsByClassName("max")[0];

var FD = document.getElementsByClassName("fd")[0];

var img = document.querySelector(".max img");

// 当鼠标移入时,让max和fd都出现

Min.onmouseover = function(){

FD.style.display = "block";

Max.style.display = "block";

}

// 当鼠标在小块里面拖着小fd移动时

Min.onmousemove = function(){

// 需要剪掉Min的offsetleft = 8;

var x = event.clientX;

var y = event.clientY;

var l = Min.offsetLeft;

var t = Min.offsetTop;

// fd移动范围,关键是边界处理

var maxX = Min.clientWidth - FD.offsetWidth;

var maxY = Min.clientHeight - FD.offsetHeight;

// fd小块的显示(用小块判断边界需要写上面)

// FD.style.left = x - FD.offsetWidth / 2 - l + "px";

// FD.style.top = y - FD.offsetHeight / 2 - t + "px";

// 用鼠标处理左右边界

if (x <= FD.offsetWidth / 2 + l) {

x = FD.offsetWidth / 2 + l;

}else if (x >= maxX + FD.offsetWidth / 2 + l) {

x = maxX + FD.offsetWidth / 2 + l;

}

// 用小块判断左右边界

// if(FD.offsetLeft <= 0){

// FD.style.left = 0;

// }else if(FD.offsetLeft >= maxX){

// FD.style.left = maxX + "px";

// }

// 用鼠标处理上下边界

if (y <= FD.offsetHeight / 2 + t) {

y = FD.offsetHeight / 2 + t;

}else if (y >= maxY + FD.offsetHeight / 2 + t) {

y = maxY + FD.offsetHeight / 2 + t;

}

// 用小块判断上下边界

// if(FD.offsetTop <= 0){

// FD.style.top = 0;

// }else if(FD.offsetTop >= maxY){

// FD.style.top = maxY + "px";

// }

// fd小块的显示(用鼠标判断边界写在下面)

FD.style.left = x - FD.offsetWidth / 2 - l + "px";

FD.style.top = y - FD.offsetHeight / 2 - t + "px";

// 求比例

var pertX = FD.offsetLeft / Min.offsetWidth;

var pertY = FD.offsetTop / Min.offsetHeight;

// 大图的显示

img.style.left = -pertX * img.offsetWidth + "px";

img.style.top = -pertY * img.offsetHeight + "px";

}

// 当鼠标移出时,让max和fd都消失

Min.onmouseout = function(){

FD.style.display = "";

Max.style.display = "";

}

</script>

</body>


</html>

















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值