ie下调整图片长宽的问题
2012-04-28 09:42
99 查看
应同事要求,做了个展示图片的网页,来协助他用c++写的程序展示图片.页面全部用js+css静态实现,代码如下
在制作的过程中发现,当你调整img对象的长或者宽时,另外一项会随着同比改变,于是就有了我的第一版程序
function setXY()
{
if(img.width > maxWidth)
{
img.width = maxWidth;
}
if(img.height > maxHeight)
{
img.height = maxHeight;
}
}
在我的意识中,这个应该会产生不变形的,最长边等于我设定该边的最大值
开始拿了几个图片都没有问题,昨天他换了一个长宽高都很大的图片,竟然变形了.
测试了半天才发现,原来,当你设定了img的一个边以后,再设置另外一个边的时候,先前设置的边不会跟着变化
例如 原图 1000*1000 我们要调整其在800*600的范围显示
正确的长宽应该是 600*600
当我将width设置成800的时候 height 变为800
这个时候程序会再次设置height为600
,出乎以外的是,width竟然没有变成600
经过修改代码应该是
<html> <head> <style> * {margin: 0;} div {text-align:center;} </style> </head> <body> <div> <img src="res/waitAni1.gif" id="loading"/></div> <div> <img src="" id="show" style="visibility:hidden;"/> </div> <script> var urlarg ={}; var img = document.getElementById('show'); var maxHeight = '600'; var maxWidth = '800'; function getarg() { var url = decodeURI(window.location.href); var allargs = url.split("?")[1]; var args = allargs.split("&"); for(var i=0; i<args.length; i++) { var arg = args[i].split("="); urlarg[arg[0]] = arg[1]; } } function setXY() { var width = img.width; var height = img.height; var rate = width/height; if(width > maxWidth ) { width = maxWidth; height = width/rate; } if(height > maxHeight) { height = maxHeight; width = height*rate; } img.width = width; img.height = height; } function setSRC() { if(!urlarg.src) { urlarg.src = ''; return; } img.onload = function(){ if(urlarg.width) { maxWidth = urlarg.width; } if(urlarg.height) { maxHeight = urlarg.height; } document.getElementById('loading').style.display = 'none'; setXY(); marginIMG(img); img.style.visibility = 'visible'; } img.src = urlarg.src; } function load() { getarg(); marginIMG(document.getElementById('loading')); setSRC(); document.body.oncontextmenu = function (e){return false;}; } function marginIMG(obj) { if(maxHeight > obj.height) { obj.style.marginTop = (maxHeight - obj.height)/2; obj.style.marginBottom = (maxHeight - obj.height)/2; } if(maxWidth > img.width) { obj.style.marginLeft = (maxWidth - obj.width)/2; obj.style.marginRight = (maxWidth - obj.width)/2; } } load(); </script> </body> </html>
在制作的过程中发现,当你调整img对象的长或者宽时,另外一项会随着同比改变,于是就有了我的第一版程序
function setXY()
{
if(img.width > maxWidth)
{
img.width = maxWidth;
}
if(img.height > maxHeight)
{
img.height = maxHeight;
}
}
在我的意识中,这个应该会产生不变形的,最长边等于我设定该边的最大值
开始拿了几个图片都没有问题,昨天他换了一个长宽高都很大的图片,竟然变形了.
测试了半天才发现,原来,当你设定了img的一个边以后,再设置另外一个边的时候,先前设置的边不会跟着变化
例如 原图 1000*1000 我们要调整其在800*600的范围显示
正确的长宽应该是 600*600
当我将width设置成800的时候 height 变为800
这个时候程序会再次设置height为600
,出乎以外的是,width竟然没有变成600
经过修改代码应该是
function setXY() { var width = img.width; var height = img.height; var rate = width/height; if(width > maxWidth ) { width = maxWidth; height = width/rate; } if(height > maxHeight) { height = maxHeight; width = height*rate; } img.width = width; img.height = height; }
相关文章推荐
- 有关IE和火狐CSS样式差异调整的相关问题(别从网上复制粘贴)
- IE图片下空隙问题解决方法集合
- 动态调整 TBitBtn 上的图片 - 回复 "游戏而已" 的问题
- 火狐,IE jQuery attr替换图片失效问题
- 如何取消IE里的缓存图片的问题asp.net(如何禁止图片缓存)转载没有用的人真讨厌
- smartform中的图片大小调整问题
- IE下fancybox显示图片不全问题
- 个别图片IE中无法显示问题
- IE6下页面gif图片停止播放的问题
- smartform中的图片大小调整问题
- 关于Windows Server 2008下IE不能调整安全级别的问题
- 兼容小问题之在IE中图片未显示
- ie兼容图片缩小后模糊失真(锯齿)问题
- OpenLayers IE 6 下 PNG 图片显示问题
- 在IE上传JPG图片的问题
- 关于IE图片链接蓝色边框的问题
- 解决IE中图片缓存的问题
- 解决IE和FF下改变img的src后,获取图片高度和宽度问题
- 关于在IE-8下 button的背景图片不能正确显示的问题
- smartform中的图片大小调整问题