Posts Tagged ‘最小高度’

IE6下最大宽度、最小宽度、最大高度和最小高度

CSS2.0中,有四个属性是设置元素最大宽度、最小宽度、最大高度和最小高度的,它们分别是:max-width、mix-width、max-height和mix-height。使用它们,可以方便为元素设定最大、最小宽度和高度。
但是,万恶的IE6竟然不支持它。所以我们只能对IE6另外寻找方法了,本文使用的方法是expression。代码如下:

/* 最小寬度 */
.min_width{min-width:300px;
   /* sets max-width for IE */
   _width:expression(document.body.clientWidth < 300 ? "300px" : "auto");
}

/* 最大寬度 */
.max_width{
   max-width:600px;
   /* sets max-width for IE */
   _width:expression(document.body.clientWidth > 600 ? "600px" : "auto");
}

/* 最小高度 */
.min_height{
   min-height:200px;
   /* sets min-height for IE */
   _height:expression(this.scrollHeight < 200 ? "200px" : "auto");
}

/* 最大高度 */
.max_height{
   max-height:400px;
   /* sets max-height for IE */
   _height:expression(this.scrollHeight > 400 ? "400px" : "auto");
}

/* 最大最小寬度 */
.min_and_max_width{
   min-width:300px;
   max-width:600px;
   /* sets min-width & max-width for IE */
   _width: expression(
      document.body.clientWidth < 300 ? "300px" :
        ( document.body.clientWidth > 600 ? "600px" : "auto")
   );
}

/* 最大最小高度 */
.min_and_max_height{
   min-height:200px;
   max-height:400px;
   /* sets min-height & max-height for IE */
   _height: expression(
      this.scrollHeight < 200 ? "200px" :
        ( this.scrollHeight > 400 ? "400px" : "auto")
   );
}

解释一下代码中的expression:expression是微软为IE5.0版本以后的浏览器加入到一个属性,用来把CSS属性和JavaScript表达式关联起来。简单的说就是CSS属性后面可以跟一段JavaScript表达式。上面的例子就是通过JavaScript表达式计算出元素的最大、最小宽度和高度的值,然后赋予CSS。

CSS自适应高度问题

要解决的问题:通过CSS给某个元素设置最小高度,并让它撑出范围时能够自适应高度。

解决问题的思路:
①IE6不支持min-height属性;
②IE6的height属性在元素撑出范围的情况下不能固定元素的高度(即IE6下的height属性等于标准浏览器下的min-height属性)。
那么解决思路就是需要给IE6和非IE6浏览器分别设置各自能够识别的属性。

解决方法一:

.demo{
	min-height:300px; //设置最小高度为300px,写给非IE6的浏览器。
	_height:300px; //写给IE6。
}

以上方法能够解决问题,但是”_height”是W3C不推荐的属性。
所以请看方法二:

.demo2{
	min-height:300px; //设定最小高度为300px,写给非IE6的浏览器。
	height:auto!important; //设置高度为自动,写给非IE6的浏览器。
	height:300px; //由于IE不能识别上句的!important,所以IE6就只能来读这句了。
}

总体来说,第一种方法的解决思路是给IE6单独定义样式,是属于比较笨的方法;第二种方法是给标准浏览器设定!important,使该属性的优先级较高,标准浏览器就会去读这句,而IE6并不支持!important,所以它只能去读后面那个height属性。第二种方法属于bug方法,不过能够通过W3C标准!