使用 Web 标准生成 ASP.NET 2.0 Web 站点

XHTML 和 DOCTYPE 切换

为 Web页指定 DOCTYPE 会影响浏览器呈现页的方式。Internet Explorer、Mozilla Firefox 和 Opera 全都支持一种名为“DOCTYPE 切换”(也叫“DOCTYPE 嗅探”)的功能。

引入 DOCTYPE 切换的目的是使浏览器能够正确地呈现符合标准的 Web 站点以及旧式 Web 站点。大多数 Web 站点被开发为呈现 HTML 页而不是 XHTML 页。浏览器通过判断是否存在 DOCTYPE 来确定何时应该使用标准来呈现页。

Internet Explorer 6+ 支持两种呈现模式,分别叫做 Quirks 模式和 Standards 模式。当 Internet Explorer 呈现包含有效 XHTML(或 HTML 4.0)DOCTYPE 的页时,它会以 Standards 模式呈现该页;否则,它会以 Quirks模式呈现该页(有关详细信息,请参阅 CSS Enhancements in Internet Explorer 6)。

Opera 浏览器 (Opera 7+) 支持与 Internet Explorer 相同的两种呈现模式:Quirks 和 Standards(有关详细信息,请参阅 http://www.opera.com/docs/specs/doctype/)。

Mozilla Firefox 1+ 支持三种呈现模式:Quirks 模式、Almost Standards 模式和 Standards 模式。Firefox 的 Almost Standards 模式对应于 Internet Explorer 和 Opera 的 Standards 模式。当页包含有效的 XHTML 1.0 Transitional DOCTYPE(并且该页被分配为 text/html MIME 类型)时,Firefox 会以 Almost Standards 模式呈现该页。当页包含 XHTML 1.0 Strict 或 XHTML 1.1 DOCTYPE(或者该页被分配为 XML MIME 类型)时,该页将以 Standards 模式呈现(有关详细信息,请参阅 http://www.mozilla.org/docs/web-developer/quirks/doctypes.html)。

可以通过临时向页中添加以下客户端脚本(该脚本在最新版本的 Internet Explorer、Firefox 和 Opera 中有效)确定浏览器的当前呈现模式。

<script type="text/javascript"> alert( document.compatMode ); </script>

您需要关心浏览器的呈现模式,因为它会影响将层叠样式表应用于该页的方式。如果将现有 HTML 页转换为 XHTML 页,那么在浏览器中打开它们时,它们可能看起来非常不同。

例如,Internet Explorer 以不同方式计算页元素的大小,这取决于呈现模式(它使用不同的 CSS Box Model)。在 Quirks 模式下,元素的宽度是通过将元素的内容、内边距、边框和边距相加而计算得到的。在 Standards 模式下,元素的宽度是只考虑元素内容的宽度而计算得到的。

例如,考虑下列两个 <div> 标记。

<div style="width:400px;border:solid 1px black">

First Box

</div>

<div style="width:400px;border:solid 1px black;padding:10px">

Second Box

</div>

除了第二个 <div> 元素的附加内边距以外,这两个 <div> 元素是相同的。在 Quirks 模式(参见图 2)下,这两个 <div> 元素看起来大小相同,因为在计算第二个 <div> 元素的宽度时考虑了它的附加内边距(这两个元素的总宽度为 400px)。在 Standards 模式(参见图 3)下,第二个 <div> 元素看起来要比第一个 <div> 元素宽,因为在计算元素的宽度时未考虑内边距(这两个元素的总宽度大于 400px)。

图 2. Quirks 模式

图 3. Standards 模式

这只是 Quirks 模式下浏览器差异的一个示例。在 Quirks 模式下,每个浏览器都以相当不同的方式实现 W3C层叠样式表标准。有关切换到 Standards 模式的一个妙处在于,它强制几乎所有现代浏览器以非常类似的方式(不完全相同,但要好得多)解释 W3C标准。

如果希望 Web 页以相同方式出现在所有浏览器中,那么通过包含 XHTML 1.0 Transitional DOCTYPE 触发 Standards 模式(在 Internet Explorer 和 Opera 中)和 Almost Standards 模式(在 Firefox 中)是一个好主意。幸运的是,默认情况下,Visual Studio .NET 2005 和 Visual Web Developer 自动将该 DOCTYPE 添加到每个新的 ASP.NET 页中。

XHTML 和 DOCTYPE 切换(MSDN)相关推荐

  1. 网页制作知识:XHTML 和 DOCTYPE 切换

    为 Web页指定 DOCTYPE 会影响浏览器呈现页的方式.Internet Explorer.Mozilla Firefox 和 Opera 全都支持一种名为"DOCTYPE 切换&quo ...

  2. [转载] 使用 Web 标准生成 ASP.NET 2.0 Web 站点

    参考链接: 使用super访问Java祖父母的成员 Stephen WaltherSuperExpert.com 适用于: Microsoft ASP.NET 2.0 (Beta 2) Microso ...

  3. Doctype? 严格模式与混杂模式-如何触发这两种模式,区分它们有何意义?

    严格模式与混杂模式--如何触发这两种模式,区分它们有何意义. 在标准模式中,浏览器根据规范呈现页面: 在混杂模式中,页面以一种比较宽松的向后兼容的方式显示. 浏览器根据DOCTYPE是否存在以及使用的 ...

  4. DOCTYPE是什么鬼?文档模式又是什么鬼?

    !DOCTYPE !DOCTYPE是什么: 在所有 HTML 文档中规定 DOCTYPE 是非常重要的,这样浏览器就能了解预期的文档类型, 告诉浏览器要通过哪一种规范(文档类型定义 DTD)解析文档( ...

  5. DOCTYPE声明作用及用法详解

    一.浏览器呈现模式和doctype 有的网页是遵循标准而创作的,但也有很多不是.即使你不能创建遵循标准的网页,也希望浏览器根据标准来正确显示那些页.目前,大量网页充斥着大量非标准代码,它们仍能正常地工 ...

  6. 前端翻译:Activating Browser Modes with Doctype

    一.前言 原本备份: http://www.cnblogs.com/fsjohnhuang/p/3830623.html 由于本人英语能力有限,译本内容难免有误,望各位指正! 本译文不含附录部分,请知 ...

  7. doctype声明、浏览器的标准、怪异等模式

    doctype 标准(严格)模式(Standards Mode).怪异(混杂)模式(Quirks Mode),如何触发,区分他们有何意义? 触发标准模式 1.加DOCTYPE声明,比如: <!D ...

  8. HTML DOCTYPE 标签 -- DTDs 文档类型声明

    来源:http://www.dreamdu.com/xhtml/tag_doctype/ 14.1. HTML DOCTYPE 标签 -- DTDs 文档类型声明 DOCTYPE 标签 -- 定义了标 ...

  9. XML中的DOCTYPE属性

    一.先来两个小例子 内部dtd将standalone设为真. <?xml version="1.0" standalone="yes"?> < ...

  10. [HTML]Doctype作用,有几种Doctype类型

    a>Doctype位于文档最前面,处于html标签之前的,告诉浏览器文档使用哪种html或者xhtml b>Doctype类型 1>严格版本2>过滤版本3>基于框架htm ...

最新文章

  1. 在Stack Overflow如果语言有问题,请写以下英文
  2. C语言一维数组、二维数组、结构体的初始化
  3. javaweb学习总结(五)——Servlet开发(一)
  4. switch和if的比较
  5. 【简单数论】H - A^X mod P_HRBUST - 2049_31行代码AC
  6. 全国计算机等级考试题库二级C操作题100套(第08套)
  7. java EL表达式中${param.name}详细
  8. Mybatis高级应用 多表关联查询
  9. request获取各种路径总结
  10. oracle not in 改为 not exist
  11. bp神经网络预测模型python,bp神经网络预测模型
  12. 电脑的眼泪--无限弹窗3
  13. 平面上两直线的夹角求法解析
  14. iOS中唯一一款不带开屏广告的日历
  15. 怎样修改电脑时间同步北京时间
  16. 仪表研发工程师所需要了解的蓝牙和WiFi知识
  17. qtcpsocket断开_关于QSocket的释放的一个需要注意的情况(必须先断开连接)
  18. 小米生态链布局遇阻,求快的小米却更慢了
  19. 第一个TensorFlow模型:摄氏度转换为华氏度
  20. Windows下SVN的Server+Client的安装

热门文章

  1. 【TSP】基于matlab混合粒子群算法求解旅行商问题【含Matlab源码 397期】
  2. from fake_useragent import UserAgent
  3. centos7 redis 重启_linux下redis启动/关闭/重启服务配置
  4. springboot日志写入mysql_springboot运用logback将日志写入数据库
  5. 尚学人工智能课程---2、算法工程师和大数据介绍
  6. NGUI组件参数总结
  7. IE10、IE11 ASP.Net 网站无法写入Cookie 问题
  8. MySQL binlog_format (Mixed,Statement,Row)
  9. 搭建Web和FTP站点
  10. AndroidStudio编译引入JsonObject