首页 > 开发 > CSS > 正文

兼容IE6、IE7的min-width、max-width写法

2024-07-11 08:29:36
字体:
来源:转载
供稿:网友

很多时候,我们会想要设置容器的最小宽度或最大宽度,但IE6不支持min-width、max-width属性怎么办?
别着急,跟着我慢慢来,会让你捉急的还很多呢
首先我们来看看标准属性min-width、max-width效果如何:



复制代码
代码如下:
.ie-hack {
min-width: 100px;
max-width: 200px;
}


复制代码
代码如下:
<div class="ie-hack">LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL</div>
<div class="ie-hack">s</div>



(图1-1  正常浏览器)


(图1-2  IE6)

咦,好像不是预期的结果

哦,原来是block的原因。那我们改用inline-block吧:


复制代码
代码如下:
.ie-hack {
min-width: 100px;
max-width: 200px;
display: inline-block;
}


复制代码
代码如下:
<span class="ie-hack">LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL</span>

<span class="ie-hack">s</span>



(图2-1  正常浏览器)


(图2-2  IE6)

哦啦,正常浏览器的宽度限制实现了,那现在我们来解决IE6的问题
这里用只有IE6才识别的_width属性,同时使用expression表达式来动态设置属性值:


复制代码
代码如下:
.ie-hack {
min-width: 100px;
max-width: 200px;
display: inline-block;
_width: expression(this.offsetWidth < 100 ? '100px' : (this.offsetWidth < 200 ? 'auto' : '200px'));
}


刷新页面看看吧

哈哈,恭喜你被坑了,IE6卡死了
别问我,我也不知道原因,不过我知道解决方法,就是把第一个小于号改为大于号:

复制代码
代码如下:_width: expression(this.offsetWidth > 100 ? (this.offsetWidth < 200 ? 'auto' : '200px') : '100px');

好了,这次不会卡死了,那我们看看效果怎么样:


(图3  IE6)

最小宽度有了,但最大宽度没限制住。
这是因为内容太多,自动拉伸了,毕竟不是max-width啊

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表