图片放大镜效果js代码

 图片放大镜效果js代码,需要引入jquery

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="jq.js" type="text/javascript" charset="utf-8"></script>
		<style>
			.sbox{
				width:400px;height:400px;
				position: relative;
				cursor: pointer;
				
			}
			.bbox{	
				position: relative;
				width: 400px;
				height: 400px;
				overflow: hidden;
				display: none;
				flex-shrink: 0;
				z-index: 9999;
			}
			.huise{
				width: 100px;height: 100px;
				background: rgba(0,0,0,0.2);
				position: absolute;
				display: none;
				z-index: 999;
			}
			.box{
				display: flex;
				position: relative;
				width:400px;
				height:400px;
				margin: auto;
			}
			.bbox img{
				position: absolute;
			}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="sbox" id="sbox">
				<img src="../img/a.jpg">
				<div class="huise"></div>
			</div>
			<div class="bbox">
				<img src="../img/b.jpg" alt="">
			</div>
		</div>
		<script type="text/javascript">
			var dome = document.getElementById("sbox")
			// 进入
			$(".sbox").mouseenter(function(e) {
				$(this).siblings(".bbox").show();
				$(this).children(".huise").show();
			})
			// 离开
			$(".sbox").mouseleave(function() {
				$(this).siblings(".bbox").hide();
				$(this).children(".huise").hide();
			})
			// 移动
			$(".sbox").mousemove(function(e) {
				// 鼠标离文档左边的距离
				var pageX = e.pageX;
				// 鼠标离父盒子的距离X
				var boxX = $(".sbox").offset().left;
				// 鼠标在盒子内部的位置X值
				var mouseX = pageX - boxX;

				// 鼠标离文档上边的距离
				var pageY = e.pageY;
				// 鼠标离父盒子的距离Y
				var boxY = $(".sbox").offset().top;
				// 鼠标在盒子内部的位置Y值
				var mouseY = pageY - boxY;

				var hX = mouseX - $(".huise").width() / 2;
				var hY = mouseY - $(".huise").height() / 2;

				// 矫正XY的值,不可以超出边界
				if (hX < 0) {
					hX = 0
				}
				if (hX > $(".sbox").width() - $(".huise").width()) {
					hX = $(".sbox").width() - $(".huise").width()
				}

				if (hY < 0) {
					hY = 0
				}
				if (hY > $(".sbox").height() - $(".huise").height()) {
					hY = $(".sbox").height() - $(".huise").height()
				}
				$(".huise").css({
					left: hX + "px",
					top: hY + "px"
				})

				// 大盒子能过移动的总距离
				var bX = $(".bbox img").width() - $(".bbox").width();
				// 灰色遮罩能移动的总距离
				var bY = $(".sbox").height() - $(".huise").height();
				// 相除得到比例-核心关键
				var rate = bX / bY;
				// 大图里的图片移动通过定位position来设置
				$(".bbox img").css({left:-rate * hX + 'px',top:-rate * hY + 'px'});

			})
		</script>
	</body>
</html>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值