放大镜

<!DOCTYPE html>

<html>


<head>

<meta charset="UTF-8">

<title>放大镜功能</title>

<style>

#small {

width: 300px;

width: 303px;

border: 2px solid red;

position: relative;

}

#small img {

width: 100%;

}

#slider {

width: 60px;

height: 60px;

position: absolute;

left: 0;

top: 0;

background-color: rgba(0, 200, 200, 0.5);

display: none;

}

#big {

width: 300px;

height: 303px;

position: absolute;

left: 350px;

top: 10px;

display: none;

overflow: hidden;

}

#big img {

width: 1500px;

}

</style>

</head>


<body>

<!--左侧的小图部分-->

<div id="small">

<img src="img/2.png" alt="" />

<!--图片上的滑块部分-->

<div id="slider"></div>

</div>

<!--右侧的大图部分-->

<div id="big">

<img src="img/3.jpg" alt="" />

</div>

</body>

<script type="text/javascript">

var small = document.getElementById("small");

var sliderDiv = document.getElementById("slider");

var big = document.getElementById("big");

var bigImg = document.querySelector("#big>img");

//给small添加移入移出事件

small.onmouseenter = function() {

sliderDiv.style.display = "block";

big.style.display = "block";

}

small.onmouseleave = function() {

sliderDiv.style.display = "none";

big.style.display = "none";

}

//给small添加鼠标移动事件

small.onmousemove = function(e) {

var event1 = event || e;

//获取鼠标点的位置,X轴位置,设置left值

var xDistance = event1.clientX - small.offsetLeft - sliderDiv.offsetWidth / 2;

//获取鼠标点的位置,Y轴位置,设置top值

var yDistance = event1.clientY - small.offsetTop - sliderDiv.offsetHeight / 2;

//设置滑块移动的X轴的最大值

var maxX = small.offsetWidth - sliderDiv.offsetWidth;

var maxY = small.offsetHeight - sliderDiv.offsetHeight;

//左侧超出时

if (xDistance <= 0) {

xDistance = 0;

}

//右侧超出

if (xDistance > maxX) {

xDistance = maxX;

}

//上侧超出

if (yDistance < 0) {

yDistance = 0;

}

//下侧超出

if (yDistance > maxX) {

yDistance = maxY;

}

//设置滑块的位置

sliderDiv.style.left = xDistance + "px";

sliderDiv.style.top = yDistance + "px";

//修改大图的位置

//第一种方式:使用滚动

//当滑块滚动到某一位置是占总总滚动距离的百分比

// big.scrollLeft = (bigImg.offsetWidth - big.clientWidth) * xDistance / maxX ;

// big.scrollTop = (bigImg.offsetHeight - big.clientHeight) * yDistance / maxY ;

//第二种方式:使用定位

bigImg.style.position="absolute";

bigImg.style.left=-(bigImg.offsetWidth-big.clientWidth)*xDistance/maxX+"px";

bigImg.style.top=-(bigImg.offsetHeight-big.clientHeight)*yDistance/maxY+"px";

}

</script>


</html>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值