今天看到了篇文章,到这翻译记下来。英文水平有限,部分只能靠自己的理解和意译下来,有哪里错误的地方,欢迎指出。

原文在这里


看那虚拟世界的第七大奇迹:在IE里的max/min-height和max/min-width。的确,利用IE独有的CSS属性,expression,你可以控制IE的宽和高在你想要的范围里。expression这个CSS属性可以使Javascript可以在IE里被执行。通过CSS执行Javasc?感谢你,微软!


为什么会说这样是很伟大的?因为在其他一些靠谱的浏览器,max/min-height和max/min-width可以很容易地通过这么一点的CSS实现..

<div style="max-width: 333px;">
   [the contents of this division will be at most 333px in width on compliant browsers]
</div>


当然,在IE的世界是不可能的,它根本就不懂什么是max-width。但幸运的是,IE有一个它特有的expression属性,这个属性可以让我们可以用Javascript表达式去操纵(X)HTML的属性,就像max-width和max-height。例如,通过expression属性去定义一个width值,我们可以这样做:

div {
   width: expression(333 + "px");
}

以上代码等同于:

div {
   width: 333px;
}


使用IE expression的缺点是,如果用户的浏览器禁止了Javascript(或丢失了)的话就不会起到任何作用。不管怎样,建立起max/min-widths/heights(或者其他的一些属性),对web程序员来说还是很重要的。废话不多说了,下面来看看例子吧。


  • IE里的max-width

这个方法在IE6里被验证过,应该在IE5里也是可行的。你可以简单地根据你的需要修改属性的值,或者把你要控制的元素替换成条件语句里面。在这个例子里,我们为IE和其他主流靠谱的浏览器设置777px的max-width值。

* html div#division {
   width: expression( document.body.clientWidth > 776 ? "777px" : "auto" ); /* sets max-width for IE */
}
div#division {
   max-width: 777px; /* this sets the max-width value for all standards-compliant browsers */
}

下面的这个例子,我们为IE和其他主流靠谱的浏览器设置33em的max-width值。

* html div#division {
   width: expression( document.body.clientWidth > (500/12) * parseInt(document.body.currentStyle.fontSize) ? "33em" : "auto" );
}
div#division {
   max-width: 33em; /* this sets the max-width value for all standards-compliant browsers */
}


  • IE里的min-width

这个方法在IE6里被验证过,应该在IE5里也是可行的。你可以简单地根据你的需要修改属性的值,或者把你要控制的元素替换成条件语句里面。在这个例子里,我们为IE和其他主流靠谱的浏览器设置333px的min-width值。

* html div#division {
   width: expression( document.body.clientWidth < 334 ? "333px" : "auto" ); /* set min-width for IE */
}
div#division {
   min-width: 333px; /* sets min-width value for all standards-compliant browsers */
}


  • IE里的max-height

这个方法在IE6里被验证过,应该在IE5里也是可行的。你可以简单地根据你的需要修改属性的值,或者把你要控制的元素替换成条件语句里面。在这个例子里,我们为IE和其他主流靠谱的浏览器设置333px的max-height值。

* html div#division {
   height: expression( this.scrollHeight > 332 ? "333px" : "auto" ); /* sets max-height for IE */
}
div#division {
   max-height: 333px; /* sets max-height value for all standards-compliant browsers */
}


  • IE里的min-height

这个方法在IE6里被验证过,应该在IE5里也是可行的。你可以简单地根据你的需要修改属性的值,或者把你要控制的元素替换成条件语句里面。在这个例子里,我们为IE和其他主流靠谱的浏览器设置333px的min-height值。

* html div#division {
   height: expression( this.scrollHeight < 334 ? "333px" : "auto" ); /* sets min-height for IE */
}
div#division {
   min-height: 333px; /* sets min-height value for all standards-compliant browsers */
}