// 图片自适应的js代码: // 图片自适应代码drawimage v 2.2 修复补白差异.js /** * 参数说明: * * 示例: * * * imgd: 要处理的图片源,使用时都是this * fitwidth: 图片要适应的宽度(含补白) * fitheight: 图片要适应的高度(含补白) * paddingh: 左右补白; * paddingv: 上面被抓; * * 注意: * 1. 该函数的设置不能覆盖css样式,因此图片最好用函数的后4个参数来设置; * 2. 补白设置会因四舍五入造成1-2个像素的偏差,需要给包含图片的元素设置宽高来修复,宽高比fitwidth、fitheight大1-2px。 * * date: 2013-2-28 11:22:36 * by: leeslee峰 * */ // 图片自适应的js代码: function drawimage(imgd,fitwidth,fitheight,paddingh,paddingv){ var image=new image(); image.src=imgd.src; imgwidth = fitwidth - paddingh*2; imgheight = fitheight - paddingv*2; if(image.width>0 && image.height>0){ if(image.width/image.height>= imgwidth/imgheight){ // 图片的宽高都比原图小时,应该按比例放大: // 不存在大于小于的问题,全部缩放:大的缩小,小的放大 imgwidthtemp = imgwidth; imgheighttemp = imgwidth*image.height/image.width; }else{ imgheighttemp = imgheight; imgwidthtemp = imgheight*image.width/image.height; } } // 图片过小时,直接在上面的判断语句中设置宽高,后面设置补白则无效,用其它变量保存宽高值,修正此问题。2013-3-5 9:20:39 imgd.width = imgwidthtemp; imgd.height = imgheighttemp; // 框模型的机制: // 内部内容占满时,如果仍增加补白,会撑大整个框,而不是压缩内容。 var paddw = parseint((fitwidth - imgwidthtemp)/2); imgd.style.paddingright = paddw+"px"; imgd.style.paddingleft = paddw+"px"; var paddh = parseint((fitheight - imgheighttemp)/2); imgd.style.paddingtop = paddh+"px"; imgd.style.paddingbottom = paddh+"px"; }