Jquery写图片放大镜。

网上一大堆限制多,文档也难看懂,而且麻烦~自己写了个。大笑

算法:

第一步:

放大图片的位置=鼠标所在的容器的宽或者高除以容器自身的高度和宽度,求出鼠标在容器中移动的百分比

第二部:

得到百分比之后

x=-(x百分比*图片的宽度-显示容器的宽度/2);

y=-(y百分比*图片的高度-显示容器的高度/2);

两个参数,x和y,就是大图的位置了,后面加了个显示容器的大小/2 是为了保证图片显示在中间。

效果图:


代码:


<!DOCTYPE HTML>
<html>
  <head>
    <title>商品信息</title>
  </head>
  <style>
		
  		html,body,img,a,div{
  			margin: 0px;
  			padding: 0px;
  			border: 0px;
  			font: 12px/150% Arial,Verdana,"宋体";
			color: rgb(102, 102, 102);
  		}
  		
  		div:after {
			clear: both;
			content: '.';
			height:0;
			visibility: hidden;
			diplay: block;
		}
		
		div {
			zoom: 1;
		}
		.main-body{
			text-align: center;
			padding: 15px;
		}
		.head-box{
			height: 400px;
			border: #CCC 1px solid;
		}
		.head-box-left{
			width: 300px;
			height: 390px;
			/*border: #CCC 1px solid;*/
			float: left;
			padding: 3px;
			position: relative;
		}
		.head-box-right{
			width: 500px;
			height: 390px;
			border: #CCC 1px solid;
			float: left;
			margin-left: 10px;
		}
		.goods-max-img{
			width: 300px;
			height: 300px;
			display:block;
			border: #CCC 1px solid;
			position: relative;
			cursor: move;
		}
		.goods-img-list{
			width: 300px;
			height: 80px;

			margin-top: 10px;
		}
		
		.goods-change{
			display: block;
			float: left;
			width: 17px;
			height: 54px;
			background: url("../web/imgs/goods-change-btn.png");
		}
		.change-prev{
			margin-right: 5px;
			margin-left: 2px;
		}
		.change-prev:HOVER{
			background-position: -34px 0px;
		}
		.change-next{
			margin-left: 5px;
			background-position: -17px 0px;
		}
		.change-next:HOVER{
			margin-left: 5px;
			background-position: -51px 0px;
		}
		
		.goods-img-list-box{
			width: 250px;
			height: 54px;
			/*border:1px #CCC solid;*/
			border: 0px 1px;
			float: left;
			position: relative;
			overflow: hidden;
		}
		.goods-img-list-box ul{
			margin: 0px;
			padding: 0px;
			position: absolute;
			top: 1px;
			left: 0px;
			width: 500px;
		}
		.goods-img-list-box ul li{
			display: block;
			float: left;
			width: 50px;
			height: 50px;
			border: #CCC 1px solid;
			margin-left: 3px;
		}
		.goods-img-list-box ul li a{
			display: block;
			width: 100%;
			height: 100%;
			text-decoration: none;
		}
		.preview-box{
			position: absolute;
			top: 0px;
			width: 500px;
			height: 500px;
			background-color: white;
			border: #CCC 1px solid;
			left: 310px;
			display: none;
			overflow: hidden;
		}
		
  </style>
  <script type="text/javascript">

  	$(function(){
  		
  		$(".goods-max-img").mousemove(function(event){
  			$(".preview-box").show();
  			//计算百分比
  			var x=event.screenX;
  			var y=event.screenY;
  			x-=$(this).offset().left;
  			y=y-$(this).offset().top-65;
  			//得出比例
  			x=(x/300).toFixed(2);
  			y=(y/300).toFixed(2);
  			
  			//250 容器的大小/2
  			x=-($("#preview-img").width()*x-250);
  			y=-($("#preview-img").height()*y-250);

  			$("#preview-img").css('top',y+'px');
  			$("#preview-img").css('left',x+'px');
  			document.title=x+","+y;
  		});
  		
  		$(".goods-max-img").mouseout(function(){
  			$(".preview-box").hide();
  		});
  		
  	});
  	
  </script>
  <body>
    <div class="main-body">
		
		<!-- 头部信息  -->
		<div class="head-box">
			
			<!-- 头部左侧信息  -->
			<div class="head-box-left">
				<!-- 商品大图  -->
				<a class="goods-max-img">
					<img width="100%" height="100%" alt="加载中..." src="http://pic.desk.chinaz.com/file/201211/5/shierybizi7.jpg">
				</a>
				<div class="preview-box">
					<div style="width: 500px;height: 500px;overflow: hidden;">
						<img id="preview-img" style="position: absolute;" alt="加载中..." src="http://pic.desk.chinaz.com/file/201211/5/shierybizi7.jpg">
					</div>
				</div>
				<!-- 大图结束  -->
				<!-- 图片列表  -->
				<div class="goods-img-list">
					<a href="javascript:void();" class="goods-change change-prev" title="上一张"></a>
						<div class="goods-img-list-box">
							<ul>
								<li><a href="javascript:void()">8</a></li>
								<li><a href="javascript:void()">7</a></li>
								<li><a href="javascript:void()">6</a></li>
								<li><a href="javascript:void()">5</a></li>
								<li><a href="javascript:void()">3</a></li>
								<li><a href="javascript:void()">3</a></li>
								<li><a href="javascript:void()">2</a></li>
							</ul>
						</div>
					<a href="javascript:void();" class="goods-change change-next" title="下一张"></a>
				</div>
				<!-- 图片列表结束  -->
			</div>
			<!-- 头部左侧信息结束  -->
			
			<div class="head-box-right"></div>
		</div>
		<!-- 头部信息结束  -->
		
		<!-- 主体内容  -->
		<div class="body-content">
		
		</div>
		<!-- 主体内容结束  -->
    </div>
  </body>
</html>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是两种jQuery图片放大镜的代码: 1. 使用HTML和CSS实现图片放大镜效果: ```html <div id="box"> <img src="./哈哈.jpg" alt=""> // 正常显示的图片 <div id="xiao"></div> </div> <div id="box2"> <img src="./哈哈.jpg" alt="" id="big"> // 要放大的图片 </div> <style> #box { position: relative; width: 400px; height: 400px; } #xiao { position: absolute; width: 100px; height: 100px; background-color: rgba(0, 0, 0, 0.5); display: none; } #box2 { position: relative; width: 400px; height: 400px; overflow: hidden; } #big { position: absolute; width: 800px; height: 800px; display: none; } </style> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { $("#box").mousemove(function(e) { var x = e.pageX - $(this).offset().left; var y = e.pageY - $(this).offset().top; var xPercent = x / $(this).width(); var yPercent = y / $(this).height(); var bigImgWidth = $("#big").width(); var bigImgHeight = $("#big").height(); var moveX = -(bigImgWidth - $(this).width()) * xPercent; var moveY = -(bigImgHeight - $(this).height()) * yPercent; $("#big").css({ "left": moveX, "top": moveY }); $("#xiao").css({ "left": x - 50, "top": y - 50 }); }); $("#box").hover(function() { $("#xiao").show(); $("#big").show(); }, function() { $("#xiao").hide(); $("#big").hide(); }); }); </script> ``` 2. 使用jQuery插件实现图片放大镜效果: ```html <div id="smallBox"> <img src="/img/1.png" alt=""> <div id="zoom"></div> </div> <div id="bigBox"> <img src="/img/1.png" alt=""> </div> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="jquery.elevatezoom.js"></script> <script> $(document).ready(function() { $("#smallBox").elevateZoom({ zoomType: "inner", cursor: "crosshair", zoomWindowFadeIn: 500, zoomWindowFadeOut: 500 }); }); </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值