浏览器兼容性经典问题(三) IE6 不支持min-width属性

问题描述:

     min-width的使用在流式布局(fluid layout)中是非常常见的,当用户在改变窗口大小的时候,网页内容会随之移动,直到窗口的大小确定位置。这个时候,min-属性变起作用了。可以通过限制min-属性,让页面产生滚动条,进而控制网页内容的位置。

        但是非常遗憾的是,在IE6中,并不支持min-属性,需要通过一些特定的办法去解决这个问题。

        在chrome firefox  safari 和IE7+中,这个属性已经被支持了,可以直接使用。

问题代码:

         

<html>
    <head>
         <style>
               body{
                    margin:0px;
                    padding:0px;
               }
               #box{
                    background:#ccc;
                    min-width:500px;
               }
         </style>
    </head>

    <body>
          <div id="box">
           ---------内容--------
          </div>
    </body>
</html>

浏览器显示效果(左边chrome  中间firefox  右边IE6):



从上面的浏览器效果图中可以看到,当窗口的宽度降到了500px以下,chromefirefox浏览器下面产生了横向的滚动条,但是IE6却没有。下面我们就针对IE6来解决这个问题



解决方法1
      
使用IE5-7)才支持的expression()表达式,可以很简单的解决这个问题,但是这种方法是不符合W3C标准的。


实现代码1

<html>
    <head>
         <style>
               body{
                    margin:0px;
                    padding:0px;
               }
               #box{
                    background:#ccc;
                    min-width:500px;
                    _width:expression(document.body.clientWidth<501 ? "500px" :"auto"); /*添加上这一句便可*/
               }
         </style>
    </head>
    <body>
          <div id="box">
           ---------内容--------
          </div>
    </body>
</html>

代码解释:

          只需要在指定的<div>中加上代码:_width:expression(width:expression(document.body.cilentWidth<501 ? "500px" :"auto");

          由于只需要在IE6下进行一些改变,所以加上"_"符号,当浏览器窗口宽度小于501px时,div宽度指定为500px,大于等于501px是,自动。

          此处要注意的是:如果写document.body.clientWidth<500会导致IE6奔溃,(两处的大小相等会产生奔溃),所以此处用501或者502,;该<div id="box">不能指定margin或者padding,或者也会造成IE6奔溃。


解决方法2:

         在<div id=box><div>中嵌套一个指定宽度的height:1px的<div>


实现代码2:

<html>
    <head>
         <style>
               body{
                    margin:0px;
                    padding:0px;
               }
               #box{
                    background:#ccc;
                    min-width:500px;
               }
                .min-width-box{
                    width:500px;
                    font-size:0px;            /*为空的div设置改css属性*/
               }
         </style>
    </head>
    <body>
          <div id="box">
           <div class="min-width-box"></div>   
           ---------内容--------
          </div>
    </body>
</html>

代码解释:

        在要指定min-width的div(box)中添加一个空的div(min-width-box)。对这个空的div进行css样式设置,宽度为需要设置的min-width;即width:500px;

        由于在IE6下面,<div class="min-width-box"></div>是嵌套在<div id="box"></div>下面的,所以他的高度会和“------内容------”这个的字体大小有关,为了不设置高度,把他的font-size:0px 设置为0px即可。 有一些教程上用height:1px而没有使用font-size,经过验证,他的演示效果是会改变的。



浏览器的效果图:(左边chrome  中间firefox  右边IE6)

     上面两种方法是实现的效果是一样的



自此便完成了这个问题的解决。





浏览器兼容性经典问题(一) IE6 下双边距问题

浏览器兼容性经典问题(二) IE6 3像素bug问题

浏览器兼容性经典问题(四) 更好的清除浮动



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值