我只是参照 @sofish 的 关于图片按比例自适应缩放 一文中的 代码 与 原理 写成了 这个 jQuery插件,木有神马技术含量的说、
插件代码如下:
* 图片按比例自适应缩放
* @param maxWidth {Number} 预览区域的最大宽度
* @param maxHeight {Number} 预览区域的最大高度
*/
$.fn.resizeImg = function(maxWidth, maxHeight) {
var w = $.width,
h = $.height;
// 当图片比预览区域小时不做任何改变
if (w < maxWidth && h < maxHeight) return;
// 当实际图片比例大于预览区域宽高比例时
// 缩放图片宽度,反之缩放图片宽度
w/h > maxWidth/maxHeight ? $.width = maxWidth : $.height = maxHeight;
}
声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: <![ jQuery插件——图片按比例自适应缩放 ]]>
=.= 这代码基本是 直接 Copy @sofish 的、、掩面~
说一下 如何调用吧、、就按照下面写的代码调用吧,别忘了要先载入 jQuery库、
$('.post-content img').resizeImg(500, 700);
最后,为了让这函数能够在网页文档加载好(忽视图片的加载、、)的时候,立马执行,还必须加上 $(document).ready 这个预载代码、
所以,完整的代码如下所示:
/**
* 图片按比例自适应缩放
* @param maxWidth {Number} 预览区域的最大宽度
* @param maxHeight {Number} 预览区域的最大高度
*/
$.fn.resizeImg = function(maxWidth, maxHeight) {
var w = $.width,
h = $.height;
// 当图片比预览区域小时不做任何改变
if (w < maxWidth && h < maxHeight) return;
// 当实际图片比例大于预览区域宽高比例时
// 缩放图片宽度,反之缩放图片宽度
w/h > maxWidth/maxHeight ? $.width = maxWidth : $.height = maxHeight;
}
$('.post-content img').resizeImg(500, 700);
})
2011/02/19 更新(感谢 @sofish 提醒),使用了 each(),并且重新写了判断条件、
P.S. 调用方法不变、
// 采取 each() 对单个对象分别进行缩放
$(this).each(function() {
var w = $(this).width(),
h = $(this).height();
// 当图片比预览区域小时不做任何改变
if (w < maxWidth && h < maxHeight) {
return;
} else if (w/h > maxWidth/maxHeight) { // 当实际图片比例大于预览区域宽高比例时
// 缩放图片宽度
$(this).width(maxWidth);
$(this).height((maxWidth*h)/w);
} else {
// 反之缩放图片宽度
$(this).height(maxHeight);
$(this).width((maxHeight*w)/h);
}
})
}
2011/02/21 更新 (感谢 @leeiio),采用 return this.each(function(){.....}); 形式、
P.S. 调用方法依旧不变、、
return this.each(function() {
var w = $(this).width(),
h = $(this).height();
if (w < maxWidth && h < maxHeight) {
return;
} else if (w/h > maxWidth/maxHeight) {
$(this).width(maxWidth);
$(this).height((maxWidth*h)/w);
} else {
$(this).height(maxHeight);
$(this).width((maxHeight*w)/h);
}
});
};