// 图片自适应的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"; }