九个常见的 IE Bugs
这篇东西算是对 IE Bugs 的总结和回顾;这些 bugs 大部分都存在于 IE6 当中。
- 元素居中。这个 bugs 是最为著名的 bug 了,解决办法是,为元素所在的容器(父元素添上 text-align: center。
- 阶梯式显示列表元素。用 Zen Coding 的语法写出现这个的 HTML 代码是:ul>li*n>a,n > 2。两个解决办法:将 li 设为浮动元素,后者改为 display: inline。
- 浮动元素的双倍边距。增加 display: inline 即可解决。
- 无法给元素设置数值较小的高度。原因或者是 IE 假定每个元素中都是有文字的,当然这是无责任的推测,推断自解决方案:一个是设定 font-size: 0,另一个是加上 overflow: hidden。
- 可翻页容器中,以相对位置定位的子元素显示错位。继续以 Zen Coding 说明 HTML 的关系: div#element>div#anotherelement。#element 限定高度并设置 overflow 为 auto;#anotherelement 是相对定位,但高度值比其父元素 #element 要大。解决办法就是把父元素 #element 也设置为相对定位。
- 固定定位元素的宽度问题。问题缘由于 padding 的设置;为固定定位元素设置 padding,其设定值也被计算到宽度中去,解决办法是 IE hacks。
- 为元素设定最小高度和最小宽度。方案一,通过 !important 来达到目的:设定最小值,然后声明为 auto 并添上 !important 的标记,最后设置一个值:
#element {
min-height: 150px;
height: auto !important;
height: 150px;
}
方案二,利用选择符的实现程度做 IE hacks。 - 固定宽度浮动元素的宽度异常。解决办法是设置 overflow: hidden。
- 列表元素之间的空白。与上述第二条的 HTML 架构一模一样:ul>li*n>a,n > 2。方案一是为 a 元素设置一个固定宽度,方案二是设置 a 元素为浮动并添上 clear: left,方案三是设置 li 为 display: inline。
总结是,IE sucks。大部分问题都是盒子模型的理解问题,解决方案都是那几个突破口。不过,针对 IE 实现的 IE hacks 最好还是用<--[if lt IE 7]><[endif]--> 来插入额外的样式表,IE hacks 对其他浏览器来说也算是一个异数。


0 条评论:
发表评论
订阅 博文评论 [Atom]
<< 主页