代码改变世界

盒子模型简单测试

2012-02-29 16:36  iBlog  阅读(1273)  评论(0编辑  收藏  举报

        本文旨在通过浏览器提供的开发人员工具来分析一下盒子模型的构成要素。

主要使用3种浏览器:ie 8(自带开发人员工具)、firefox 10(firebug插件)、chrome 16(自带开发人员工具), 这里要特别提到ie8的开发人员工具的“布局”显示跟其他浏览器有差别(参看此文)      

二话不说直接上代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>box Model with xhtml1 transitional dtd</title>
         <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    </head>
    <body>
        <p>这是有Doctype声明的html文档(xhtml1 transitional dtd)</p>
        
        <input type="button" id="check" value="check box model" />
        <script type="text/javascript">
            $("#check").click(function(){
                var model = jQuery.support.boxModel ? "W3C 模型" : "IE 模型";
                $("p").html("盒子模型是: <span>" +    model + "</span>");
            });
        </script>
        <div style="width:200px;height:100px;margin:18px;padding:13px;border:3px solid red; background:gray">
          width:200px;height:100px;
 
          margin:18px;
          border:3px;
          padding:13px;
        </div>
    </body>
</html>

三个浏览器的表现

635edb34jw1dqj5usvh49j635edb34jw1dqj65vp6n2j635edb34jw1dqj6e59tlgj

看图说话:三个浏览器在解析with doctype的文档时,盒子模型是一致的(W3C标准模型),呈现的效果是一致的,虽然从开发人员工具的布局图上看IE是那么的另类,不要错怪IE!

 

去除html文档中的doctype声明,使浏览器渲染模式进入混杂模式(Quirks mode),关于doctype与渲染模式可参看正确使用DOCTYPE

2012-02-29_155610

其他两个浏览器依然按照W3C标准盒子模型来解析,虽然浏览器渲染模式已经进入混杂模式,但值得注意的是:

只要一个页面使浏览器运行在混杂模式下,在 IE 和非 IE 浏览器中的页面布局都可能产生较大差异,只是IE浏览器比较突出而已,常被称作“IE盒子模型BUG”

另外,ie和非ie浏览器即使都工作在混杂模式下,他们也不一定能呈现同样的页面效果,所以建议使用严格模式,只有这样他们之间的差异才会最小!