<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>火狐浏览器的怪癖</title>
<style>
*{ margin:0; padding:0; }
body{ font:12px/1.5 tahoma,arial,\5b8b\4f53; border: 1px dotted red; }
.clearfix:after{ clear:both; content:''; display:block; height:0; }/* 如果设置overflow:auto/hidden,该现象消失 */
.clearfix{ zoom:1; }/* 如果设置overflow:auto/hidden...(非visible),该现象消失 */
ul li{ float:left; margin-right:30px; }
.box{ margin:auto; width:900px; }
.bottom{ margin-top:100px; }
</style>
</head>
<body>
<div class="box"><!-- 不要给box设置border/padding,否则这种现象就不会出现了 -->
<ul class="clearfix"><!-- 块状元素 -->
<li><!-- 设置浮动 -->
WWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
</li>
<li><!-- 设置浮动 -->
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ
</li>
</ul>
<div class="bottom"><!-- 调节bottom的margin-top值,你会很容易发现这种现象 -->
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
</div>
</div>
</body>
</html>
最近,我在做网页时发现一个唯独在火狐(在IE6~9、Firefox、Chrome下均测过)下出现的怪问题——垂直margin双倍外边距问题。注意这不是大家常谈的margin-top失效问题(即collapsing margins,margin折叠/合并问题
),我想这应该算是火狐的一个BUG,或者不知名的机制造成,出问题的代码如上,具体在火狐显示效果如下:
图1
图2
图3
大家可以通过不断调节.bottom的margin-top值更深刻地感受一下火狐送给我们的“美味”!再在其他浏览器(如Chrome、IE)试验一下,是不是这个现象就没了呢?
其实,这种解决这个火狐下问题的办法倒是多种多样,如通过padding、border、overflow、inline或height等方法都能解决,而且可以审时度势地采取办法,对于最终的页面效果倒是没什么影响。
但是,我不想只知其所以然,而不知为何然。通过举出这个例子,只是想探究火狐依赖的是什么机制才这样解析的,这到底是不是火狐的BUG呢?或者说,这是火狐的亮点呢,还是缺点?
这个问题已经困扰我好久了,查了很多资料却没有这方面的。亲爱的网友们,如有对这方面感兴趣的,知道这个问题答案的同志,还请不吝赐教!小弟敬候佳音!
- 大小: 83.9 KB
- 大小: 127.5 KB
- 大小: 90 KB
分享到:
相关推荐
在计算元素的实际宽度时,IE 和 Opera 使用的公式是 `(margin-left) + width + (margin-right)`,而 Firefox 和 Mozilla 使用的是 `(margin-left) + (border-left-width) + (padding-left) + width + (padding-right...
IE和Firefox对BOX模型的解析不同,IE使用“怪异盒模型”(包含边框和内填充的总宽度和高度),而Firefox等其他浏览器遵循“标准盒模型”(仅计算内容区域的宽度和高度)。解决办法是在CSS中使用`box-sizing:border-...
- 当一个元素设置了`float`属性并且具有`margin`时,在IE6中可能会出现双边距bug。 - 解决方案是将`float`元素的`display`属性设为`inline`。 - 示例代码: ```css div { float: left; margin-left: 10px; ...
这些代码片段利用CSS的特性,为Firefox、Safari、Chrome和Opera浏览器设置了不同的宽度值。通过特定的CSS选择器和媒体查询,可以针对不同浏览器进行个性化定制。 ##### IE条件注释 ```html <!--[if lte IE 6]> <!...
### H5前端面试题知识点详解 ...##### 1. 测试过的浏览器及其内核 ...- IE6/7/8 的特定问题(如双边距 bug)。 以上内容涵盖了H5前端面试题中的核心知识点,希望能帮助你在面试过程中更加自信地应对各种问题。
- **问题**: IE的双边距BUG:块级元素float后设置横向margin,ie6显示的margin比设置的较大。 - **答案**: 这是IE6的一个bug,可以通过添加额外的负margin或使用CSS hack来解决。 **38. HTML与XHTML的区别** - **...
- **Firefox**: Gecko引擎 - **Safari**: WebKit引擎 - **Edge (旧版)**: EdgeHTML引擎 - **IE**: Trident引擎 - **Opera**: Blink引擎 **测试覆盖要点**: - 布局的一致性 - 功能的完整性 - 性能和渲染速度 - 兼容...
IE6存在一个著名的双边距BUG,即当元素设置为`float`属性后,其左右`margin`会出现加倍现象。解决此问题可以通过添加!important声明来覆盖IE6的错误计算: ```css margin-left: 10px !important; /* IE7, IE8, FF ...
当元素设置为`float`后,在IE6/7中会出现margin双边距问题,即元素的左边距或右边距被加倍计算。这种现象在示例代码中通过设置`float:left`和`margin-left:10px`得以体现,IE6/7下实际应用的`margin-left`值会超过...
- **兼容性问题**: 如IE6双边距BUG。 - **解决方法**: 使用条件注释或特定浏览器的CSS Hack。 **44. display属性** - **值**: `block`, `inline`, `inline-block`, `flex`, `grid`等。 - **作用**: 控制元素的显示...
在 IE 中,可以使用 border:2px outset 来实现双边框,而在 Firefox 中,可以使用 -moz-border-top-colors: #d4d0c8 white; 等属性来实现双边框。 9. 浏览器 bug 浏览器 bug 是一个常见的问题。在 IE 中,存在双边...
- **Firefox**:Gecko内核。 - **Chrome**:Blink内核。 - **Opera**:Presto内核。 - **IE6 BUG解决方法**: - **双边距BUG**:使用`display`属性来解决`float`引起的问题。 - **3像素问题**:使用`display:...
- **IE6双边距bug**:浮动元素的宽度计算问题,可使用负margin或`display:inline-block`解决。 此外,前端开发者还需了解: - **Web标准**:理解W3C标准,关注语义化HTML和CSS规范。 - **浏览器内核差异**:处理...
**40、IE 的双边距 BUG:块级元素 float 后设置横向 margin,ie6 显示的 margin 比设置的较大。解决:加入 _display:inline** 此 bug 在 IE6 中较为常见,解决方法是在元素上添加 `_display: inline` 或使用其他 ...
- IE6双边距bug:可以使用`_display:inline;`修复。 - 渐进增强和回退策略:使用条件注释或CSS hack处理不同IE版本的差异。 - 自定义属性和事件对象属性:统一使用`getAttribute()`获取自定义属性,并处理`event`...
- IE6 的双边距 bug 是指当块级元素设置 float 并同时设置横向 margin 时,IE6 下的 margin 会出现双倍的现象。 **38. HTML 与 XHTML ——二者有什么区别?** - HTML 是一种更为宽松的标记语言规范。 - XHTML 是 ...
需要注意的是,`margin`属性主要针对IE浏览器,而`padding`则针对Firefox浏览器。 - 在处理CSS透明度时,可以为IE浏览器和Firefox分别设置不同的属性:`filter: progid:DXImageTransform.Microsoft.Alpha(style=0,...
1. **IE6的渲染引擎**:IE6使用的是Trident渲染引擎,它与现代浏览器(如Chrome、Firefox等)使用的WebKit或Blink引擎存在较大差异,导致HTML和CSS的解析方式不同,从而产生兼容性问题。 2. **盒模型问题**:IE6对...