ie8 用css实现图片的等比例缩放

为了使图片不是真,需要进行图片的等比例缩放。
之前在网站上发现所有浏览器都没问题,唯独ie8出现这个问题,因为之前的系统win8无法安装ie8,没有测试环境以至于这个问题存在了很长时间。今天在另一个哥们的电脑上把ie6升级到ie8,经过反复的测试,最终发现解决方法。

“打开所用主题的style.css文件,找到.post-content img{,如果没有的话直接添加,在后面加上如下代码:
1
2
3
max-width:600px; width: expression(this.width > 600 ? "600px" : true); height:auto;

  这里的.post-content img{不是固定的,不同的主题可能不同。
  max-width: 600px: 代码中的这个部分针对Firefox/Opera浏览器,限制对象的最大宽度为600px。此代码对IE无用,为了让IE也能限制对象宽度,所以在代码中加入第2行代码,用IE提供的expression命令,使所有图片的宽度自动缩小或放大至600px。”

  在我的博客使用旧模板时,这种方法一直工作得很好,在各主流浏览器下均能实现图片的等比例缩放。然而在更换了模板之后,同样的方法,却无法在IE8中实现同样的效果。在IE8中,图片仅是宽度被缩放了,而高度仍旧不变,显得非常难看。
  对于这个问题,Ann给了我几个解决的方案:
  1. 在head中增加meta标签如下

1
<META http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />

  2.css样式改成:

a img.aligncenter {
display:block;
margin-left:auto;
margin-right:auto;
max-width:700px;
_width:expression(this.width<700px?"auto":"700px");
}

  3. 或者在问题页面+

<script language="javascript" type="text/javascript">
function changimgsize(){
var imgs = document.getElementById("page").getElementsByTagName("img");
var imgwidth=600;
for(i=0; i <imgs.length; i++){
if(imgs[i].width>imgwidth){
var oW = imgs[i].width;
var oH = imgs[i].height;
var rate = oH/oW;
imgs[i].width = imgwidth;
imgs[i].height = imgwidth*rate;
}
}
}
window.onload=changimgsize;
</script>

  通过对比,发现旧模板正是比新模板多了一个如第一方案中的meta标签,在header.php中加入此标签,问题解决。至于方案二和方案三,未做测试,不知可行与否。

  补充:对于 IE 8,如果不使用加 meta 标签的方法,那么就需要在第一个 CSS 样式中补充一个“width:auto;”,才能正常实现限制最大宽度的图片等比例缩放,即:

width:auto;
max-width:600px;
width: expression(this.width > 600 ? "600px" : true);
height:auto;

但是这样一来,浏览器可能会无视 img 标签中设置的尺寸。

 

你可能感兴趣的:(ie8 用css实现图片的等比例缩放)