`
faylai
  • 浏览: 78219 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

ie css bug 总结

阅读更多
在开发中我们常会在ie中遇到很多莫名的bug,尤其是ie6这个早就该退出历史的浏览器。刚刚在haslayout.net上看到有总结ie的一些 bug,分享一下。

1.图片label bug,影响版本ie6/ie7/ie8,当label中有img的时候无法触发点击选中form元素事件.
demo [url=http://haslayout.net/demos/Image-Label-Focus-Bug-Demo.html]http://haslayout.net/demos/Image-Label-Focus-Bug-Demo.html[/url]
fix demo [url=http://haslayout.net/demos/Image-Label-Focus-Bug-Fixed-Demo-CMS.html]http://haslayout.net/demos/Image-Label-Focus-Bug-Fixed-Demo-CMS.html[/url]
解决方案:通过给<label>内加入一个空的span标签,然后设置 position:absolute;background:url(#); 设置label float:left; position:relative;overflow:hidden;就可以解决了

2.设置margin auto的button没有居中,影响版本ie8,ie8下,如果给像button这样的标签(如button input[type="button"] input[type="submit"])设置{ display: block; margin-left: auto; margin-right: auto; }如果不设置宽度的话无法居中。
demo [url=http://haslayout.net/demos/No-Auto-Margin-Center-on-Buttons-Inconsistency-Fixed-Demo-CS.html]http://haslayout.net/demos/No-Auto-Margin-Center-on-Buttons-Inconsistency-Fixed-Demo-CS.html[/url]
解决方案:可以给button加上宽度,或是通过js,var buttons = document.getElementsByTagName(’button’); for ( var i = 0; i < buttons.length; i++ ) {
buttons[i].style.width = buttons[i].offsetWidth + ‘px’;
}
另一种解决方案:
<form action=”">
<div>
<button>This button should be centered</button>
<div class=”ie_fix”>
<input type=”button” value=”This button should be centered”>
</div>
<input type=”text”>
<input type=”checkbox”>
<input type=”radio”>
<div class=”ie_fix”>
<input type=”submit” value=”This button should be centered”>
</div>
<input type=”file”>
<select><option>test</option></select>
</div>
</form>

button, select, input {
display: block;
margin-left: auto;
margin-right: auto;
width: auto;
}
.ie_fix {
text-align: center;
}
.ie_fix input[type="submit"],
.ie_fix input[type="button"] {
display: inline-block;
}
<!–[if IE 8]>
<style type=”text/css”>
button { display: table; }
</style>
<![endif]–>

给 input[type="button"] input[type="submit"]加上一个额外的标签,并设置display:inline-block;
并通过条件注释给ie8下设置button display:table;

3.不正确的浮动伸展布局,影响版本ie6/ie7,连续浮动的元素并且设置clear属性没法自动伸展
demo [url=http://haslayout.net/demos/Incorrect-Float-Shrink-Wrap-Bug-Demo.html]http://haslayout.net/demos/Incorrect-Float-Shrink-Wrap-Bug-Demo.html[/url]
fix demo [url=http://haslayout.net/demos/Incorrect-Float-Shrink-Wrap-Bug-Fixed-Demo.html]http://haslayout.net/demos/Incorrect-Float-Shrink-Wrap-Bug-Fixed-Demo.html[/url]
解决方法:给连续浮动元素加一个span然后设置display:inline-block和display:block

4.文档滚动bug,影响版本ie6/ie7,不在html标签上设置overflow或许会影响到body上面的overflow
具体请看[url=http://haslayout.net/css/Document-Scrollbars-Overflow- Inconsistency]http://haslayout.net/css/Document-Scrollbars-Overflow-Inconsistency[/url]

5.连续浮动元素bug,影响版本ie6/ie7,[url=http://haslayout.net/css/Float-Squeeze- Weird-Gap-Bug]http://haslayout.net/css/Float-Squeeze-Weird-Gap-Bug[/url]

6.连续浮动字符出现重复字符,影响版本ie6/ie7,[url]http://haslayout.net/css/Float-Squeeze- Duplicate-Last-Character-Bug[/url]
这个和5的解决方案都差不多,5是通过加一个宽度,而这个是通过给浮动字符加一个position:relative;

7.空元素高度bug,影响版本ie6/ie7,有layout的空元素获得了高度
<div></div>div {
background: blue;
width: 100%; /* to give “layout”  */
}

解决办法:
div {
height: 0;
overflow: hidden;
background: blue;
width: 100%; /* this is just what we originaly had as “layout” giver */
}

8.表单元素双margin bug,影响版本ie6/ie7,input和textarea或许会继承父元素的水平的margin
具体请看[url=http://haslayout.net/css/Form-Control-Double-Margin-Bug]http: //haslayout.net/css/Form-Control-Double-Margin-Bug[/url]

9.ie7的1px dotted 边框变成dashed边框的bug,影响版本ie7, 当设置了1px dotted边框后,有一个边框的宽度大于1px
的话其它为1px边框会变为dashed的样式,具体请看[url=http://haslayout.net/css/IE7-1px-Dotted- Border-Appears-As-Dashed-Bug]http://haslayout.net/css/IE7-1px-Dotted-Border-Appears-As-Dashed-Bug[/url]

10.overflow bug,影响版本ie6/ie7,当设置了overflow:hidden或auto的元素,如果子元素设置了相对定位,overflow就不起作用了,
表现的是visible的样式,解决方法是给父元素加一个position:relative;

11.ie7的坏的:hover 绝对定位bug,影响版本ie7, 当子元素设置了absolute并且通过设置left top 等来通过:hover时改变其显
示位置时将会不起作用如果他们不再父元素的可视范围内,解决方法是给其加上margin-left:0%;

12.当:active时Button背景偏移,影响版本ie8,给button设置:active时背景会做偏移,可以通过设置:active时的 -ms-background-position-x和-ms-background-position-y来改变这个偏移。

13.:hover边框消失bug,影响版本ie8, 当设置了outline的元素后,再设置:hover的时候,如果设置边框的话,将会不显示

14.百分比padding垂直margin bug,影响版本ie8,当父元素设置了百分比的padding,子元素有垂直的margin的时候,
就好像父元素被设置了margin一样,解决方法是给父元素加一个overflow:hidden/auto

15.图片浮动List标记错位bug,影响版本IE8, 当List里面有浮动的image时,List标记显示的位置跑在里面了,可以通过使用背景图片代替List自带的标记来解决。

16.TH没有继承Text-Align属性的bug,影响版本IE8,当给table设置text-align时,TH没有继承样式,可以通过给TH设 置text-align:inherit;来解决IE8下这个丑陋的bug。

17.32个Style限制,影响版本ie6/7/8, 在32个”style”方法(style, link, @import)后浏览器会忽略后面的样式

18.白色背景hover bug,影响版本ie7, 给hover设置background-color:#ffffff;时,背景不会改变,解决方法是设置background:#ffffff;

19.* html bug,影响版本ie6,* html [selector]在ie6下通常不会被忽略,这个bug通常被用来作IE6的hack使用。

20.!important bug, 影响版本ie6, 在important之后设置同样的规则后important会被忽略,这个bug也常被用来指定ie6的样式。

21.png图片和背景颜色不一致,影响版本ie6/7/8, 设置背景颜色和png图片背景同样的颜色代码最后表现不一致,原来是因为ie支持“PNG Gamma profiles”,解决方案是通过一个pngcrush程序来优化图片。

22.auto margin居中bug, 影响版本ie6/7/8, 给block元素设置margin auto无法居中,出现这种bug的原因通常是没有Doctype,然后触发了ie的quirks mode,加上<!DOCTYPE html>就可以了。

23.:first-line/:first-letter里的!important会忽略,影响版本ie8, 在:first-line/:first-letter里应用!important的规则会被忽略,解决方法就是不用!important

24.:first-letter被忽略的bug, 影响版本ie6, 当:first-letter前面有逗号的时候ie6会忽略这条规则,解决方法是将:first-letter放到最后。

25.浮动元素的阶梯bug, 影响版本ie6/7, 当给一系列<li>里面的浮动元素设置font-size后会出现阶梯效果,解决方案是给li设置display:inline;

26.List背景消失bug, 影响版本ie6, 当给浮动的div里面的dt, dd, dl设置背景时不显示,解决方案是给dt, dd, dl加上position:relative;

27.noscript样式bug, 影响版本ie6/7/8, 当js可用的时候如果给noscript设置border和背景都可以显示,解决方法就是通过给noscript设置display:none;

28.透明区域无法点击bug, 影响版本ie6/7/8,当给一个display:block元素使用filter来支持png透明的时候,透明区域无法点击,解决方法是不要使用 background:none;filter…,而是background:url(#);filter…

29.List标记偏移,影响版本ie8, 当给list里面的元素设置display和overflow属性后List标记会偏移,解决方法是给里面的元素加一个float:right; width:100%;可以使用ie的条件注释针对ie8

30.ol数字标记不自增, 影响版本ie6/7, 当给li设置宽度时会触发这个bug,解决方法是给li设置display:list-item

31.ul/ol标记消失bug, 影响版本ie6/7, 当ul/ol触发了layout并且有margin-left会触发这个bug,解决方案是给li设置margin-left

32.图片不垂直居中,影响版本ie6/7, 当使用line-height来居中图片时在ie6/7下不会生效,解决方法是在img后加一个空白元素如<span>< /span>

33.没有背景图片bug, 影响版本ie6/7/8, 当使用background的时候如果在url()后没有加空格背景图片就不会显示。

34.自定义鼠标bug, 影响版本ie6/7/8, 当自定义鼠标样式的时候,如果url()里面的路径是相对路径的话,ie会认为相对于当前文档而不会出现鼠标样式的图片,解决方法是采用绝对路径。

35.背景溢出bug, 影响版本ie6, 一个容器里面有浮动元素并且通过加一个clear:both的额外div来清除浮动会产生此bug,解决方案就是建议尽量不要通过增加一个 clear:both的div来清除浮动,可以通过在外层加上overflow:hidden;对于ie可以通过加上zoom:1;来触发ie的 layout

36.高度扩展bug, 影响版本ie6, 当高度很窄如小于12px时ie6会扩展高度,解决方法是设置overlfow:hidden或font-size:0;

37.宽度扩展bug, 影响版本ie6, 当连续英文字符的时候设定宽度不起作用,解决方法是设置overflow:hidden或word-wrap:break-word;

38.浮动双margin,影响版本ie6, 当给一个浮动元素设置margin-left或margin-right时margin加倍,解决方法是加上一条display:inline;

39.负margin bug, 影响版本ie6/7, 当给一个有layout容器里面的元素设置负marin时内容会被截断,解决方法是不让容器有layout或者给负marin的元素设置 position:relative;zoom:1;

40.3px间距bug, 影响版本ie6, 当几个连续浮动且有layout的元素排列时会有3px的间距,解决方法就是给这些元素设置3px的负margin或加上 overflow:hidden;

41.text-align bug, 影响版本ie6/7, 当容器外面设置了text-align,如果容器里面有文本和其他block的元素, block的元素也会继承text-align,这是不正确的,解决方法是重新写出合理的有语义的markup,如文本外面加一个p.

 

分享到:
评论
1 楼 fenghoer 2012-10-26  
       

相关推荐

    iebug总结jar包

    "iebug总结jar包"是一个专门针对这些问题的资源集合,它包含了处理IE bug的相关资料,特别是针对IE6的解决方案。以下是基于这个主题的详细知识点: 1. **IE6的渲染引擎**:IE6使用的是Trident渲染引擎,它与现代...

    常见 CSS BUG 的处理

    - **IE hasLayout**:许多 IE 的 CSS BUG 都与 hasLayout 有关。可以通过设置 `zoom: 1` 来触发 hasLayout,或者使用 `overflow: hidden` 来解决相关问题。 - **Chrome/Safari/Firefox 等现代浏览器**:这些问题通常...

    解决ie9、ie10本地css加载不上的解决方法实例

    Internet Explorer(IE)作为曾经的主流浏览器,尤其在IE9和IE10版本上,开发者常常会遇到CSS(层叠样式表)加载不上的问题。这主要是由于IE9和IE10对某些CSS特性支持不足以及对文件加载机制的差异导致的。本篇将...

    让IE中支持css3.0效果

    但凡是前端工程师,都知道IE6,IE7,IE8不支持、或者不完全支持CSS3的属性。 CSS3 有很多很强大、绚丽的效果,比如,圆角,阴影,渐变透明,渐变背景,等等。 因为IE6时代,没有什么标准,而因为各种原因,IE6用户...

    最常见的9种IE_css_bug及fix

    ### 最常见的9种IE_css_bug及fix:深入解析与解决方案 #### 1. 居中布局问题 在Web开发中,将元素居中是极为常见的需求。通过设置`margin: auto;`通常能够轻松实现这一目标,但在IE6中,这种方法却会遇到问题。...

    ie6BUG解决方案

    1. `opacity`属性:IE6并不支持CSS3的`opacity`属性。为了实现透明效果,开发者通常会依赖JavaScript库,如jQuery,或者使用专为IE6设计的滤镜(filter)属性。例如,可以使用以下CSS代码: ```css &lt;!--[if IE 6]&gt; ...

    css常见的bug(ie)

    以下是一些针对IE浏览器的CSS常见bug及解决策略: 1. **浮动元素的双倍margin问题**: 在IE6中,如果一个浮动元素设置了margin属性,可能会导致实际的外边距比预期的要宽一倍。为了解决这个问题,可以将浮动元素的...

    ie6兼容bug总结

    /*” “*/} } @import ‘ie5win.css’; /*”;}}/* */` 是 IE5.x 的过滤器,只对 IE5.x 生效。 11. `/*\*//*/@import “ie5mac.css”;/**/` 是针对 IE5/Mac 的过滤器,但实际应用较少。 12. HTML 条件注释...

    ie特有bug文档

    ### IE特有Bug知识点解析 #### 一、概述 Internet Explorer(简称IE)作为曾经市场上最主流的浏览器之一,在其发展过程中积累了一系列特有的兼容性问题。这些问题是由于IE浏览器自身的技术限制以及对某些Web标准的...

    CSS浏览器兼容和IE中bug问题

    ### CSS浏览器兼容性与IE中的Bug处理 #### CSS兼容性问题概述 在Web开发中,浏览器的兼容性问题一直是开发者需要面对的重要挑战之一。不同浏览器(如IE、Chrome、Firefox等)对CSS的支持程度和解释方式存在差异,...

    IE6, IE7, IE8 CSS 兼容速查表

    3. **浮动元素的清除**:IE6、7在处理浮动元素的清除时有bug,可能需要使用额外的空元素或`clearfix`类来解决。例如,可以为父元素添加`zoom:1`触发hasLayout,或者使用`:before`伪元素结合`clear:both`。 4. **...

    让ie兼容css选择器

    同时,ie8.js还修复了一些与CSS相关的IE8 Bug,如盒模型问题和透明度处理。 ie9.js虽然名字中有"9",但它的作用并不只是针对IE9,而是为所有版本的IE浏览器提供更多的CSS3兼容性。它包括了之前两个库的功能,并且...

    9个最常见IE的Bug及其fix

    标题:“9个最常见IE的Bug及其fix” 描述:“9个最常见的IE6 Bug,快解决头疼的IE6吧” 在本文中,我们将深入探讨IE6中最为常见的九个Bug,并提供相应的解决方案,帮助Web开发者们解决这个曾经令人头疼的问题。 ##...

    IE CSS Bug及解决方案参考手册

    总结来说,解决IE浏览器中的CSS兼容性问题,需要掌握一整套针对IE浏览器的“Hacking Rules”,包括条件注释、特殊的选择器前缀、使用特定的CSS属性值等技巧。了解这些问题和解决方案,可以帮助前端开发者更好地在...

    DIV+CSS相对IE6、IE7和IE8的兼容问题

    标题和描述均提到了“DIV+CSS相对IE6、IE7和IE8的兼容问题”,这揭示了在Web开发中,尤其是针对老旧浏览器如IE6、IE7和IE8进行CSS布局时,开发者可能遇到的一系列挑战。这些浏览器在解析CSS规则时存在独特的行为,...

    常见css BUG

    ### 常见CSS Bug详解 #### CSS兼容性问题概览 在开发网站时,确保网页能在各种浏览器中正常显示是非常重要的。不同的浏览器对CSS的支持程度各不相同,特别是早期的Internet Explorer(IE)版本与现代浏览器如Fire...

    css规范_IE bug,IE与Firefox的CSS兼容问题.....整理

    本文主要探讨了针对IE浏览器,尤其是IE与Firefox之间存在的CSS兼容性问题,并提供了一些解决方案和编写高效、维护友好的CSS代码的规范。 一、使用CSS方法 遵循W3C标准编写CSS,避免使用非标准或过时的属性,这将有...

    目前比较全面的浏览器CSS BUG兼容汇总

    浏览器CSS兼容性问题一直是Web开发中的痛点,尤其是在处理IE6、IE7以及Firefox等不同浏览器时。以下是一些常见的CSS兼容性BUG及其解决方案: 1. **垂直居中问题**: 在IE6、7和Firefox中,实现元素的垂直居中可以...

    css样式BUG大全

    ### CSS样式BUG大全详解 #### 一、概述 在Web前端开发过程中,CSS(层叠样式表)作为页面样式设计的重要工具,其正确性直接影响着网站的视觉效果及用户体验。然而,在不同浏览器环境下,CSS的表现可能会出现差异,...

Global site tag (gtag.js) - Google Analytics