解决'填充'css问题的最佳方法

时间:2009-07-31 02:39:23

标签: css internet-explorer firefox cross-browser

<div style='width:500px; height:500px; padding:50px;'> </div>

由于IE和Firefox上的“填充”行为不同。解决这个问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:17)

IE框模型(称为传统的盒子模型),包括元素宽度/高度的填充和边框。

在IE盒子模型下,宽度为100px,每边2px填充,3px边框和每边7px边距的盒子的可见宽度为114px。

W3C盒型号(标准盒型号),从元素的宽度/高度中排除了填充和边框。

在W3C盒子模型下,宽度为100px,每边2px填充,3px边框和每边7px边距的盒子的可见宽度为124px。

Box Models
(来源:456bereastreet.com


为了使IE使用W3C盒子模型(这是其他浏览器使用的模型),您的页面需要以严格模式呈现。默认情况下,IE以Quirks模式呈现。

要在IE中触发严格模式,您必须指定doctype。您可以使用以下任何文档类型:

HTML4严格:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd" >

XHTML 1.0严格:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

您的doctype必须是首页出现在您的页面上。它甚至在<html>标记之前,就在它自己的行上。

有关Quirks / Strict模式的更多信息:

  

CSS - Quirks mode and strict mode

答案 1 :(得分:1)

不仅Firefox和IE之间的行为不同......即使在不同版本的IE之间也存在差异。

最好的方法是使用CSS选择器而不是内联样式,并使用IE条件注释根据浏览器版本加载不同的样式表。它允许您创建一个主样式表,然后修复其他的异常。

答案 2 :(得分:1)

另一种选择是为您遇到问题的特定浏览器添加条件注释,例如:

<!--[if IE 6]>
     <style type="text/css">
          #thisdiv { width:500px; height:500px; padding:50px; }
     </style>
<![endif]-->

我不确定这是最好的方式,但我认为没有人真正想到这一点。我认为我们都尽力而为,希望随着时间的推移事情变得更好,所以不需要这些东西。