浏览器
双核浏览器
游戏浏览器
高速浏览器
视频浏览器
IE浏览器
浏览器周边
手机浏览器
安卓游戏
音乐舞蹈
养成游戏
儿童游戏
仙侠手游
角色扮演
策略塔防
休闲益智
动作冒险
飞行射击
模拟经营
体育运动
赛车竞速
网络游戏
安卓软件
资讯阅读
生活服务
影音播放
购物理财
效率办公
趣味娱乐
交通出行
学习教育
摄影图像
在线音乐
系统工具
网络购物
聊天工具
安全杀毒
图片编辑
新闻资讯
软件资讯
游戏资讯
手机教程
手游攻略
游戏攻略
软件教程
IE专区
安卓专题
文章合集
电脑软件专题
安全软件
杀毒软件
系统安全
加密解密
防火墙
远程控制
木马查杀
影音软件
网络电视
视频播放
音乐播放
视频制作
音频编辑
录音录像
教育学习
外语学习
教育管理
早教启蒙
在线课堂
成人教育
资格考试
聊天社交
即时通讯
视频聊天
在线交友
变声器
表情包
办公软件
线上会议
文档管理
行业管理
考勤打卡
应用工具
输入法
下载工具
时钟日历
记事本
文件管理
计算器
编程开发
编程工具
JAVA相关
加壳脱壳
编程控件
数据库
网页源码
软件开发
补丁制作
系统美化
桌面制作
壁纸大全
系统主题
屏幕保护
桌面辅助
系统软件
系统优化
备份还原
系统检测
U盘工具
磁盘工具
驱动补丁
图文处理
图片素材
图像处理
图片制作
图片压缩
电子相册
抓图工具
其他软件
电子书籍
模拟器
辅助工具
交通出行
手机管理
其他工具
素材下载
字体素材
PPT素材
专区
文章合集
软件
游戏
浏览器
安卓专题
软件
游戏
浏览器
IEfans/ IE专区/ IE修复 /兼容IE6、IE7的min-width、max-width写法

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

2023-06-14 17:30:01 编辑:匿名

很多时候,我们会想要设置容器的最小宽度或最大宽度,但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啊
那我们把超出的内容截掉看看:


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


(图4 IE6)

OK,效果达到了。
至此,你是不是认为问题都解决了?
年轻人,图样图森破啊,IE岂是你能轻易解决的
让我们来看看还有什么问题吧,这次我们用在按钮上看看效果如何:


复制代码代码如下:
input class="ie-hack" type="button" value="LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL" /

input class="ie-hack" type="button" value="s" /



(图5-1 正常浏览器 IE6)


(图5-2 IE7)

Oh, no!这次IE6通过了,但是换IE7来折磨你了(真的是折磨啊,说多了都是泪。)

Why?

好像是因为IE7这时把min-width当成width设置了,解决方案还是hack:


复制代码代码如下:
.ie-hack {
min-width: 100px;
max-width: 200px;
*+min-width: auto;
*+width: expression(this.offsetWidth 100 ? (this.offsetWidth 200 ? 'auto' : '200px') : '100px');
_width: expression(this.offsetWidth 100 ? (this.offsetWidth 200 ? 'auto' : '200px') : '100px');
overflow: hidden;
}



(图7 IE7)

谢天谢地!终于可以了,开香槟庆祝咯!

Wait,年轻人,都说你太年轻了,还不信

如果我不提醒你,哪天死了你都不知道怎么死的

这次我们使用JS来动态改变控件的内容,看看控件的宽度是否会随之改变


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

span class="ie-hack" id="span2"s/span

input class="ie-hack" id="btn1" type="button" value="LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL" /

input class="ie-hack" id="btn2" type="button" value="s" /


复制代码代码如下:
window.onload = function() {
document.getElementById("span1").innerHTML = "s";
document.getElementById("span2").innerHTML = "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL";
document.getElementById("btn1").value = "s";
document.getElementById("btn2").value = "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL";
};



(图8-1 正常浏览器)


(图8-2 IE6 IE7)

我们想到的效果应该是图8-1那样的,但这次IE6和IE7携手一起来折磨你了

抓狂了,裸奔去,下回再分解

相关推荐

浏览器更新