发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
最近在做一个项目,大量的图片基于js进行缩放(图片放大镜),考虑用css要写许多hack,而已经基于jq了,干脆写个方法得了。
代码很简单,不用多讲但是很实用。
$.fn.extend({ center:
function
(n,b) {
n=
typeof
n?n:300;
//过渡时间,默认为300毫秒;Number类型;
b=b===
false
b:
true
;
//铺满父容器;如果为真 则清除标签上的style样式、计算出缩放数据后、还原清楚的样式后、按照缩放数据缩放,如果为假 则保持原尺寸(会出现图片显示不全现象);Boolean类型;
$(
this
).each(
() {
var
t=$(
),tP=t.parent();
//获取相对缩放的父容器;
tOld=t.attr(
"style"
);
//存储当前样式;
b&&t.removeAttr(
//清除当前样式;
tH=t.height(),tW=t.width();
//缩放对象宽,高;
tPH=tP.height(),tPW=tP.width();
//缩放对象父容器宽,高;
scaleW=tH/tW,scaleH=tW/tH;
//比例计算;
pScaleW=tPH/tPW,pScaleH=tPW/tPH;
//父容器比例计算;
baseW=(pScaleW-scaleW)>(pScaleH-scaleH);
//是否按照宽度进行缩放;
t.attr(
,tOld);
//还原存储的样式;
data={
"width"
:tW,
"height"
:tH,
"opacity"
:1};
//缩放效果数据(声明和原始数据);
if
((baseW&&b)){data.width=tPW; data.height=tPW*scaleW};
//按照宽度进行缩放更改效果数据;
((!baseW&&b)){data.height=tPH; data.width=tPH*scaleH};
//按照高度进行缩放更改效果数据;
data[
"top"
]=(tPH-data.height)/2; data[
"left"
]=(tPW-data.width)/2;
//计算位置;
t.css(
,0);
t.stop(
,
).animate(data,n);
//实施效果参数;
})
}})
center插件在线调试
完整实例:
<!doctype html> <html> <head> <meta charset="utf-8"> <title></title> <style> .item{ position:relative; height:300px; width:300px; overflow:hidden; border:5px #ccc solid; float:left; margin:10px;} .item img{ position:absolute;} .item span{ position:absolute; top:50%;padding:20px; display:none; background:rgba(0,0,0,.5); color:#fff;} .item:hover span{ display:block;} </style> </head> <body> <div class="item"><img src="http://f.hiphotos.baidu.com/album/w%3D2048/sign=5a4b7bd68326cffc692ab8b28d394b90/7af40ad162d9f2d3ba2229a0a8ec8a136327cc4a.jpg"><span></span></div> <div class="item"><img src="http://d.hiphotos.baidu.com/pic/w%3D230/sign=3f65b6e61c950a7b753549c73ad0625c/0d338744ebf81a4c22620119d62a6059242da68a.jpg"><span></span></div> <div class="item"><img src="http://h.hiphotos.baidu.com/pic/w%3D230/sign=d44f53508701a18bf0eb154cae2e0761/08f790529822720e536837867bcb0a46f21fab2c.jpg"><span></span></div> <div class="item"><img src="http://e.hiphotos.baidu.com/pic/w%3D230/sign=3b73e8b90b55b3199cf9857673a88286/7af40ad162d9f2d3c39c8057a8ec8a136227ccfd.jpg"><span></span></div> <br clear="all"> <a href="http://"></a> </body> </html> <script src="http://code./jquery-2.0.3.min.js"></script> <script> $(function(){ $.fn.extend({ center: function (n,b) { n=typeof n?n:300;b=b===false?b:true; $(this).each(function() { var t=$(this),tP=t.parent(); var tOld=t.attr("style");b&&t.removeAttr("style"); var tH=t.height(),tW=t.width(); var tPH=tP.height(),tPW=tP.width(); var scaleW=tH/tW,scaleH=tW/tH; var pScaleW=tPH/tPW,pScaleH=tPW/tPH; var baseW=(pScaleW-scaleW)>(pScaleH-scaleH); t.attr("style",tOld); var data={"width":tW,"height":tH,"opacity":1}; if((baseW&&b)){data.width=tPW; data.height=tPW*scaleW}; if((!baseW&&b)){data.height=tPH; data.width=tPH*scaleH}; data["top"]=(tPH-data.height)/2; data["left"]=(tPW-data.width)/2; t.css("opacity",0); t.stop(true,true).animate(data,n); })}}) }); </script> <script> $(function(){ $("img").each(function() { var t=$(this); t.next().html("设置前图片大小 宽*高= "+t.width()+"*"+t.height()) }); $("img").eq(0).center(300,false) $("img").eq(1).center() $("img").eq(2).center(300,false) $("img").eq(3).center() }) </script>
王那个锋啊的个人博客
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
JS快速获取图片宽高的方法
// 图片地址var img_url = ''http://www.qttc.net/static/upload/2013/13643608813441.jpg'';// 创建对象var img = new...
【留言回帖】留言回帖重新整理(4)
<P align=center><IMG src=<P align=center><IMG style="VISIBILITY: visible" height=389 src.<P alig...
图片 滚动代码
书画名品滚动欣赏
日志背景制作代码
<tr><td><div align="right"><div align="center"><table border="0" width="420" cellspacing="0" cellpadding="...
几组制作代码音动画的代码
<DIV style="POSITION: absolute; TOP: 620px; LEFT: 400px"><DIV style="TEXT-ALIGN: left; WRITING-MODE: tb-rl; WIDTH: 400px; HEIGHT: 750px; FONT-SIZE: 19pt">&...
网页设计中当前正在访问的导航栏高亮显示的解决方案
<table id="navigation" width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#000000"&g...
html5 图片旋转
html5 图片旋转。var ctx = canvas.getContext(''2d'');img.onload = function() { ctx.translate(img.width / 2, img.height / 2);''> <div id=&q...
漂亮边框模板及代码之一(13款)
微信扫码,在手机上查看选中内容