js自制图片放大镜功能
本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下
注释:
smallimgsize:600x400
bigimgsize:1200x800
原理:
1、大图是小图的2倍整
2、大图以小图片中心点为中心
a.transform:translate(-50%,-50%)
b.(rate-0.5)*50%
c.clip:rect(t,r,b,l)以小图边界为边界
3、rect必须有absolute
4、获取鼠标在图片中的位置
a.获取鼠标位置XY
b.获取图片位置、宽度、高度
i.得到鼠标在图片的百分比位置
ii.将百分比位置应用于大图left,top
问题:
居中理解太差:
absolute,left,top,right,bottom,margin
放大缩小问题:
起初:transform:scale()缩放
利用transition过渡
结果,采用这种方法会使得鼠标移动时很卡顿
可能原因:每次hover都会触发transition事件
解决方法:采用了Animate动画来实现缩放
细节:
以onmouse事件e动态获得e.pageX和e.pageY
以$().offset().top/left获取图片位置
以$().width()/height()获取图片宽高
在错误的操作中也忘了获取class的方法
$().attr("class")
$().prop("class")
event.traget.className
如果要实现hover出现透明的块状就在外部opacity:0.5;设置z-index就可以了。
<html>
<head>
<metacharset="UTF-8">
<title>WEBGOD</title>
<linkrel="stylesheet"type="text/css"href="css/bootstrap.min.css"/>
<scriptsrc="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<scriptsrc="js/bootstrap.min.js"type="text/javascript"charset="utf-8"></script>
<styletype="text/css">
#warpper{
margin:0auto;
padding:0;
position:relative;
z-index:1;
width:600px;
height:400px;
}
.small{
text-align:center;
}
.big{
display:none;
clip:rect(200px,900px,600px,300px);
position:absolute;
width:1200px;
height:800px;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
.bigimg{
position:absolute;
width:600px;
height:auto;
left:0;
right:0;
top:0;
bottom:0;
margin:auto;
}
</style>
</head>
<body>
<divid="warpper">
<divclass="small">
<imgsrc="img/small_19.jpg"/>
</div>
<divclass="big">
<imgsrc="img/img_19.jpg"/>
</div>
</div>
<scripttype="text/javascript">
$(function(){
varx,y,left,top,width,height,imgWidth,imgHeight,rateX,rateY;
$("#warpper").hover(function(){
$(".big").css("display","block");
$(".bigimg").animate({"width":"1200px"},500);
},function(){
$(".bigimg").animate({"width":"600px"},1);
$(".big").css("display","none");
})
$("#warpper").on("mousemove",function(e){
x=e.pageX;
y=e.pageY;
top=$(".smallimg").offset().top;
left=$(".smallimg").offset().left;
width=$(".smallimg").width();
height=$(".smallimg").height();
//
imgWidth=$(".bigimg").width();
imgHeight=$(".bigimg").height();
rateX=(left+width-x)/width;
rateY=(top+height-y)/height;
if(rateX>0&&rateY>0&&rateX<=1&&rateY<=1){
$(".bigimg").css("left",(rateX-0.5)*50+"%");
$(".bigimg").css("top",(rateY-0.5)*50+"%");
}
})
})
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。