作家
登录

基于jQuery的图片大小自动适应实现代码

作者: 来源:www.28hudong.com 2013-03-30 01:11:46 阅读 我要评论

关于 这个和以前弄的图片远处放大有许多相同的地方,比如图片预加载、有限容器显示无限大图片。 大小计算:内外两个比例。 复制代码 代码如下: // 容器比例和图片比例 var dr = dw/dh, ir = iw/ih; if(dr>ir){ ih = dh; iw = ih * ir; }else{ iw = dw; ih = iw / ir; } 居中显示:CSS绝对定位,负边距。 复制代码 代码如下: $img.css({width:iw,height:ih,position:'absolute',top:'50%',left:'50%',marginLeft:-iw/2,marginTop:-ih/2}) 加载中和加载出错:可自定义的参数。 HTML容器: <div class="jq-img-autoresize" data-img-size="160,390" data-img-url="m1.jpg"></div> 如何使用: 复制代码 代码如下: $('div.jq-img-autoresize').imgAutoResizer({ loading : function () { $(this).text('loading..'); } ,error : function () { $(this).text('无效..'); } }); 所有代码:复制代码 代码如下: /* * 图片等比缩放 * @by ambar * @create 2010-11-17 * @update 2010-11-17 */ $.fn.imgAutoResizer = function (options) { return this.each(function () { var opt = $.extend({ sizeAttr : 'data-img-size' ,srcAttr : 'data-img-url' ,error : null ,loading : null }, options || {}); var $el = $(this), src = $el.attr(opt.srcAttr), size = $el.attr(opt.sizeAttr).split(','); // 容器宽高 var dw = size[0], dh = size[1]; var $img = $('<img />', { src : src }), img = $img[0]; var autoresize = function () { if($el.data('img.complete')) return; // 图片宽高 var iw = img.width, ih = img.height; if(!iw || !ih) return; // 比例 var dr = dw/dh, ir = iw/ih; if( !(dw > iw && dh > ih) ){ if(dr>ir){ ih = dh; iw = ih * ir; }else{ iw = dw; ih = iw / ir; } } // console.log(dr,':',iw,'@',ih); $el.data('img.complete',true).css({position:'relative',width:dw,height:dh,overflow:'hidden'}); $img.css({width:iw,height:ih,position:'absolute',top:'50%',left:'50%',marginLeft:-iw/2,marginTop:-ih/2}).appendTo($el.empty()); }; $img .load(autoresize) .error(function () { if($.isFunction(opt.error)) opt.error.call($el); }); if(img.complete){ if(img.width && img.height) autoresize(); }else{ if($.isFunction(opt.loading)) opt.loading.call($el); } }) }; 演示地址:http://demo.jb51.net/js/imgAutoResizer/打包下载:http://xiazai.jb51.net/201011/yuanma/imgAutoResizer.rar

  推荐阅读

  JavaScript类型转换方法及需要注意的问题小结(挺全面)

一、类型转换的方法和应该注意的问题:1.转换为布尔型:(1)用两次非运算(!):!!5 ==> true(2)用布尔型的构造函数:new Boolean(5) == > true值转换为布尔类型为false:0,+0,-0,NaN,""(空字符串),undefined,>>>详细阅读


本文标题:基于jQuery的图片大小自动适应实现代码

地址:http://www.17bianji.com/kaifa2/JS/25441.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)