jquery实现的放大镜

这是一个很简单的放大镜的实现:

html中加入:

<div id="myJqzoom" bigImage="big.jpg" style="border:solid 1px black;clear:both">
	<img src="small.jpg" />
</div>
js代码:
$(function(){
	myJqzoom($("#myJqzoom"));
});

//放大镜
function myJqzoom(myJqzoomDiv){
	//作为参数传进来
//	var myJqzoomDiv = $("#myJqzoom");

	myJqzoomDiv.css("position","relative");
	myJqzoomDiv.css("float","left");

	var offSetLeft = myJqzoomDiv.offset().left; //控件的位置
	var offSetTop = myJqzoomDiv.offset().top;

	var myJqzoomDivWidth=myJqzoomDiv.outerWidth(true);//控件的宽高
	var myJqzoomDivHeight=myJqzoomDiv.outerHeight(true);

	var pageLeft;//鼠标的位置
	var pageTop;

//  添加覆盖区域
	var pupHtml='<div class="pupzoom undis" style="clear:both"> </div>';
	var pupzoom = $(pupHtml).appendTo(myJqzoomDiv);

	var pupzoomWdith=pupzoom.outerWidth(true);//覆盖区域的宽和高
	var pupzoomHeight=pupzoom.outerHeight(true);

	var pupLeft=0;//覆盖区域的位置
	var pupTop=0;


	//添加大图区域
	var bigImg=myJqzoomDiv.attr("bigImage");
	var top1Html='<div class="pa" style="left:360px;top:0px"></div>';
	var top1=$(top1Html).appendTo(myJqzoomDiv);
	var top2Html='<div class="pr w400" style="border:solid 1px #999"></div>';
	var top2=$(top2Html).appendTo(top1);
	var top3Html='<div id="big" class="h400 pr" style="width:100%;overflow:hidden"></div>';
	var big=$(top3Html).appendTo(top2);
	var imgHtml='<img src="'+bigImg+'" style class="pa" />'
	var img=$(imgHtml).appendTo(big);
	

	myJqzoomDiv.mouseover(function(){
		pupzoom.removeClass("undis");
	}).mousemove(function(e){
		pageLeft = e.pageX;
		pageTop = e.pageY;
		
		//阴影框的显示
		pupLeft=pageLeft-(pupzoom.outerWidth(true)/2)-offSetLeft;
		pupTop=pageTop-(pupzoom.outerHeight(true)/2)-offSetTop;

		if(pupLeft<0){
			pupLeft=0;
		}
/*		if(pupTop<=offSetTop){
			pupTop=offSetTop;
		}*/
		if(pupLeft+pupzoom.outerWidth(true)>myJqzoomDiv.outerWidth(true)){
			pupLeft=myJqzoomDiv.outerWidth(true)-pupzoom.outerWidth(true);
		}
		/*if(pupTop+pupzoom.outerHeight(true)>=offSetTop+myJqzoomDiv.outerHeight(true)){
			pupTop=offSetTop+myJqzoomDiv.outerHeight(true)-pupzoom.outerHeight(true);
		}*/
		if(pupTop<0){
			pupTop=0;
		}
		if(pupTop+pupzoom.outerHeight(true)>(myJqzoomDiv.outerHeight(true))){
			pupTop=myJqzoomDiv.outerHeight(true)-pupzoom.outerHeight(true);
		}
		pupzoom.css("left",pupLeft+"px");
		pupzoom.css("top",pupTop+"px");
		
		$("#big img").css("left",((0-pupLeft)*($("#big").outerWidth(true)/pupzoom.outerWidth(true)))+"px");
		$("#big img").css("top",((0-pupTop)*($("#big").outerHeight(true)/pupzoom.outerHeight(true)))+"px");

	}).mouseout(function(){
		pupzoom.addClass("undis");
	});
}



css代码:

.pupzoom{
	width:175px;
	height:175px;
	border:1px solid orange;
	position:absolute;
}
.pr{
	position:relative;
}
.pa{
	position:absolute;
}
.w350{
	width:350px;
}
.h350{
	height:350px;
}
.w175{
	width:175px;
}
.h175{
	height:175px;
}
.w400{
	width:400px;
}
.h400{
	height:400px;
}
.undis{
	display:none;
}

里面用到的两张图,从京东上弄下来的,一张是350*350的,一张是800*800的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值