解决IE6不支持min-height和max-heigt的bug

web前端 7051 14年前 (2010-10-13)

先来解决下min-heigt的bug
布局过的人都知道CSS的最小高度min-height是个很有用的属性,它可以让很短的内容也有一个很合适的高度,使页面显得美观。但很可惜IE6不支持这一属性。怎么办呢?我们可以用另外一种方法让IE6也有最小高度min-height属性的效果。

众所周知,如果内容超过元素的高度,那么IE6是会自动增加元素的高度,即使你明确的定义了元素的高度。我们可以利用IE6的这个bug来让IE6也有最小高度min-height属性的效果。具体代码如下:

height:auto !important;height:500px;min-height:500px;

解释:

1、由于IE6对!important的解释存在bug,所以它只识别height:500px这一句,超过500px后,IE6自身会增加盒子的高度;
2、IE7和其他标准浏览器三句都能识别,虽然定义height:500px,但我们又有了height:auto !important,所以超过500px也能自动增加盒子的高度。

max-heigt的bug比较麻烦,有2种解决方法,先看jQuery方法:

if($.browser.msie&&($.browser.version === "6.0")){$(".entry").each(function()
{if($(this)[0].scrollHeight>500)$(this)
.css({"height":"500px","overflow":"hidden"});});}

原理:

在IE6中可以通过设定height来达到max-height的效果. 循环所有要加max-height属性的DOM元素,判断他的scrollHeight大于你要设置的最大高度 如果超过了就通过设置height为最大高度,我这里使用的是[0],获取的是的DOM对象,而不是jQuery对象。

分享给朋友: