放大镜放大图片效果

Original 2019-02-27 22:20:18 304
abstract:<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" href=""/>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<link rel="stylesheet" href=""/>
	</head>
	<style type="text/css">
		*{margin: 0;padding: 0;}
		.normal{height: 350px;width: 350px;position: fixed;top: 30px;left: 30px;border: 1px solid #000000;}
		.normal img{height: 350px;width: 350px;}
		.area{height: 100px;width: 100px;background:#CCCCCC;opacity: 0.4;position: absolute;}
		.bigger{height: 350px;width: 350px;border: 1px solid #000000;position: relative;top: 30px;left: 410px;overflow: hidden;}
		.bigger img{height: 1150px;width:1150px;position: absolute;}
	</style>
	<body>
		<div class="normal">
			<img src="1.jpg" alt="" />
			<div class="area"></div>
		</div>
		<div class="bigger">
			<img src="1.jpg"/>
		</div>
	</body>
	<script src="js/jquery-1.11.1.min.js"></script>
	<script type="text/javascript">
		$(function(){
			$('.area').hide();
			$('.bigger').hide();
			
			$('.normal').mouseover(function(){
				$('.area').show();
				$('.bigger').show();
				//小方块跟随鼠标移动而移动
				$('.normal').mousemove(function(xy){
					$('.area').css({
	                   	'left':xy.pageX-$('.area').width()/2,
	                   	'top':xy.pageY-$('.area').height()/2
	                   })
				})
				
				$('.normal').mousemove(function(e){
					//获取鼠标的当前位置
					var x=e.clientX;
					var y=e.clientY;
					//获取原图窗口距文档的偏移距离  offset()方法
					var nx=$('.normal').offset().left;
					var ny=$('.normal').offset().top;
					//获取鼠标相对与原图窗口的位置
					var sx=x-nx;
					var sy=y-ny;
					//鼠标相对小框的一半
					var ax=$('.area').width()/2;
					var ay=$('.area').height()/2;
					//鼠标移动时小框移动的距离
					$('.area').css({
						left:sx-ax+'px',
						top:sy-ay+'px'
					})
					
					//获取小框的偏移位置
					var px=$('.area').position().left;
					var py=$('.area').position().top;
					
					//获取右边框(边框最大宽度)的位置
					var maxw=$('.normal').width()-$('.area').width();
					//获取下边框(边框最大高度)的位置
					var maxh=$('.normal').height()-$('.area').height();
					
					//鼠标超过左边框时,left=0
					if(px<=0){
						$('.area').css('left','0px')
					}
					//鼠标超过上边框时,top=0
					if(py<=0){
						$('.area').css('top','0px')
					}
					//鼠标超过最大宽度(右边框)时,left=maxw
					if(px>=maxw){
						$('.area').css('left',maxw+'px')
					}
					//鼠标超过最大高度(下边框)时,top=maxh
					if(py>=maxh){
						$('.area').css('top',maxh+'px')
					}
					
					
					//获取小框的偏移位置
					var px=$('.area').position().left;
					var py=$('.area').position().top;
					//当前小框的偏移位置*3作为放大后图片的偏移位置
					var bx=px*3;
					var by=py*3;
					$('.bigger').find('img').css({
						'left':-bx+'px',
						'top':-by+'px'
					})
				})
				
				
			})
			
			$('.normal').mouseleave(function(){
				$('.area').hide();
				$('.bigger').hide();
			})
		})
	</script>
</html>

请问老师这里为啥是负值呀,有点没搞清楚哇

$('.bigger').find('img').css({
'left':-bx+'px',
'top':-by+'px'
})

Correcting teacher:灭绝师太Correction time:2019-02-28 09:28:18
Teacher's summary:因为小框的偏移位置的起始值是左上角呀,移动的话就是向右移动

Release Notes

Popular Entries