为什么要加入这个文档声明——IE怪异模式

时间:2023-03-10 07:01:06
为什么要加入<!doctype html>这个文档声明——IE怪异模式

  调试了很久,发现了一个非常细微但又十分重要的问题,又一次我在对于文档声明类型的时候,声明了如下类型

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

  然后,我在body里面写了两个div,并且定义了宽度和高度均为80px,padding上下左右均为20px,那么显然,对于w3c标准的话,整个盒子的外部大小应该是120*120px,

为什么要加入<!doctype html>这个文档声明——IE怪异模式

  但是在IE下,我们发现宽度和高度是80*80px

为什么要加入<!doctype html>这个文档声明——IE怪异模式

  IE下,我们可以发现,对于元素的宽度,他其实定义的是元素的内容宽度,所以显示的是80*80px

  后来,

  我修改了html文档声明:<!DOCTYPE html>

  由于IE的宽度不仅仅包含了内容宽度,而且还包含了padding,其实IE这种表达方式更为科学,但由于历史和市场的发展,chrome,firefox等主流浏览器都以w3c为标准,而导致了元素在不同浏览器下的显示兼容问题

更改了文档声明之后,发现,此时的IE的宽度,和chrome一样,是不包含padding的,再加上padding以后,其宽度和高度就变为120X120,如图:

为什么要加入<!doctype html>这个文档声明——IE怪异模式

  所以,我们在写html标签的时候,首要关键是要检查好文档声明类型,否则,在我们后期的兼容性调试的过程中,将会非常的费力且麻烦,由于我们的浏览器接收从服务器端发送过来的文档中,根据文档声明而进行解析,如果遇到了<!DOCTYPE html>,则表示我们的浏览器需对当前的文档以W3C的标准进行解析,所以这个声明是至关重要的

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Title</title>
<meta name="Keywords" content="">
<meta name="Description" content="">
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/inside.css" />
</head>
<body>
  <div class="main">

  </div>
  <div class="main">

  </div>

</body>

</html>

.main{
    background-color: #a847c3;
    width: 80px;
    height: 80px;
    padding: 20px 20px;
    border: 1px solid #2C2C2C;
    float: left;
}