from: /* http://bbs.blueidea.com/thread-2792311-1-1.html */

DOCTYPE不可怕,但把它拿走,会让你怕了又怕。

  最近在蓝色理想转悠,发现很多朋友提出有关DIV+CSS排版问题,以及IE与FF的兼容问题。怎么问的都有,结果就是一个——显示很奇怪,很难调整。我们浏览的大多数网站,或者用Dreamweaver创建一个新的网页文档时,源码的顶部都会有DocType声明,但是很多人没有注意它,甚至在创作时候直接将它删掉,其实这往往就是噩梦的开始。在遵循标准的任何Web文档中,DOCTYPE都是一项必需的元素。它会影响代码验证,并决定了浏览器最终如何显示你的web文档。为了避免DOCTYPE的问题重复出现,我根据手头的资料整理了这篇文档,以备自己及有兴趣的朋友参考。

  在默认情况下,FF和IE的解释标准是不一样的,也就是说,如果一个网页没有声明DOCTYPE,它就会以默认的DOCTYPE解释下面的HTML。在同一种标准下,不同浏览器的解释模型都有所差异,如果声明标准不同,不用我说,您自己想就可以了。学习网页标准,浏览器兼容,从哪里开始您自己决定,但是,请认识DOCTYPE:

一、什么是DOCTYPE

  DOCTYPE是Document Type(文档类型)的简写,在页面中,用来指定页面所使用的XHTML(或者HTML)的版本。要想制作符合标准的页面,一个必不可少的关键组成部分就是DOCTYPE声明。只有确定了一个正确的DOCTYPE,XHTML里的标识和CSS才能正常生效。

二、DOCTYPE的规则

  DOCTYPE声明的写法遵循一定的规则,它指出阅读程序应该用什么规则集来解释文档中的标记。在Web文档的情况下,“阅读程序”通常是浏览器或者校验器这样的一个程序,“规则”则是w3c所发布的一个文档类型定义(dtd)中包含的规则。
每个dtd都包括标记、attributes、properties等内容,它们用于标记web文档的内容;此外还包括一些规则,它们规定了哪些标记能出现在其他哪些标记中。每个web建议标准(比如html 4 frameset和xhtml 1.0 transitional)都有自己的dtd。

以下是从手册上摘抄的规则:

语法:

复制内容到剪贴板

代码:

HTML  顶级元素  可用性 "注册//组织//类型 标签//定义  语言""URL"

可能值:

复制内容到剪贴板

代码:

- 顶级元素:指定 DTD 中声明的顶级元素类型。这与声明的 SGML 文档类型相对应。 HTML 默认。HTML。
- 可用性:指定正式公开标识符(FPI)是可公开访问的对象还是系统资源。 PUBLIC 默认。可公开访问的对象。SYSTEM 系统资源,如本地文件或 URL。
- 注册:指定组织是否由国际标准化组织(ISO)注册。 + 默认。组织名称已注册。
- 组织名称未注册。Internet 工程任务组(IETF)和万维网协会(W3C)并非注册的 ISO 组织。
组织:指定表明负责由 !DOCTYPE 声明引用的 DTD 的创建和维护的团体或组织的名称,即 OwnderID。 IETF IETF。 W3C W3C。
- 类型:指定公开文本类,即所引用的对象类型。 DTD 默认。DTD。
- 标签:指定公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。 HTML 默认。HTML。
- 定义:指定文档类型定义。
  Frameset 框架集文档。
  Strict 排除所有 W3C 专家希望逐步淘汰的代表性属性和元素,因为样式表已经很完善了。
  Transitional 包含除 frameSet 元素的全部内容。
- 语言:指定公开文本语言,即用于创建所引用对象的自然语言编码系统。该语言定义已编写为 ISO 639  语言代码(大写两个字母)。 EN 默认。英语。
- URL:指定所引用对象的位置

  为了获得正确的DOCTYPE声明,关键就是让dtd与文档所遵循的标准对应。例如,假定文档遵循的是xhtml 1.0 strict标准,文档的doctype声明就应该引用相应的dtd。另一方面,如果doctype声明指定的是xhtml dtd,但文档包含的是旧式风格的html标记,就是不恰当的;类似地,如果doctype声明指定的是html dtd,但文档包含的是xhtml 1.0 strict标记,同样是不恰当的。

三、选择什么样的DOCTYPE

  如上例所示,XHTML 1.0中有3种DTD(文档类型定义)声明可以选择:过渡的(Transitional)、严格的(Strict)和框架的(Frameset)。这里分别介绍如下。

1.过渡的

一种要求不很严格的DTD,允许在页面中使用HTML4.01的标识(符合xhtml语法标准)。过渡的DTD的写法如下:

复制内容到剪贴板

代码:

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

2.严格的

一种要求严格的DTD,不允许使用任何表现层的标识和属性,例如<br/>等。严格的DTD的写法如下:

复制内容到剪贴板

代码:

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

3.框架的

一种专门针对框架页面所使用的DTD,当页面中含有框架元素时,就要采用这种DTD。框架的DTD的写法如下:

复制内容到剪贴板

代码:

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

  使用严格的DTD来制作页面,当然是最理想的方式。但是,对于没有深入了解Web标准的网页设计者,比较合适的是使用过渡的DTD。因为这种DTD还允许使用表现层的标识、元素和属性,比较适合大多数网页制作人员。

四、需要注意的问题

  没什么特别的,就是一定要将DOCTYPE声明放在XHTML文档的顶部,上面哪怕多个HTML注释标记都不行。

  最好示例代码也加上DOCTYPE,否则效果会有差异。

  哦,还有就是,这篇文章仅供交流,没有版权

站住!不许动!放下DOCTYPE!相关推荐

  1. 春节保安不回家,守护家园保平安1

    过年啦!千万百万的同胞们都赶回家与亲人团聚,他们吃着热腾腾的团圆饭,他们偎在床上一起磕着瓜子看着春节联欢晚会,锣鼓声声,鞭炮声声,一家人真是其乐融融.可是有那么一群人,他们是马路上的一道亮丽的风景线, ...

  2. 前端学习(205):animation动画库

    动画库 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8& ...

  3. 英语口语8000句-重要的提醒和忠告

    ●教诲.告诫 约翰,向她道歉. John, apologize to her. John, apologize to her. (约翰,向她道歉.) I'm really sorry. (真对不起.) ...

  4. 8000 sentences of Oral English(two)

    第二章 使您交谈轻松愉快的短句 (8) 见面.分手时 ●碰到友人 Hello, Mr. Smith. Oh, hi John. Oh, Mary! How are you? -- Fine, than ...

  5. 我拿什么融化你,冰冷的电子图书馆?

    我拿什么融化你,冰冷的电子图书馆? --论下一代在线文献管理工具 这篇文章其实自己已经收藏好久了,都没有时间好好去看一下,心里总像是有块石头没有放下一样.恰好前天丁香园的张进给我发来邮件,说这篇文章不 ...

  6. 阿弥陀佛和他的极乐世界

    阿弥陀佛和他的极乐世界 陈义孝居士著 一.极乐世界的有无问题 二.十方赞誉的阿弥陀佛 三.美妙绝伦的极乐世界 四.说之不尽的往生利益 五.特色如云的念佛法门 六.净土三经的特别提示 七.认清我们的娑婆 ...

  7. AS(强直性脊柱炎)完全手册

    AS完全手册 目录 第一章: AS概述 第一节: 几个基本概念 强直性脊柱炎 血清阴性脊椎关节病变 强直性脊柱炎的流行病学 强直性脊椎炎的病理变化 第二节: AS的病因和临床症状和诊断标准 强直性脊柱 ...

  8. [PMZL]第1卷-误入天庭-01

    "李总,您的电话,是全通公司曾总." 秘书小玉一直不明白自己公司的李强总经理,如此精明的人为什么喜欢和这个曾总混在一起,这个全通公司是一家标准的空壳公司,而公司老总曾伟光绝对是混世 ...

  9. .[转] 家里有娃娃的请注意,终于把儿歌凑齐了!! 儿歌大全

    拍手歌(一) 你拍一,我拍一,一个小孩坐飞机. 你拍二,我拍二,两个小孩丢手绢. 你拍三,我拍三,三个小孩来搬砖. 你拍四,我拍四,四个小孩写大字. 你拍五,我拍五,五个小孩敲锣鼓. 你拍六,我拍六, ...

最新文章

  1. 彻底明白Java语言中的IO系统
  2. VTK:Medical之TissueLens
  3. 编程开发涉及的非原生英文名词的读法
  4. 《photon中配置lite的相关问题》
  5. Python3学习笔记18-访问限制
  6. chmod 更改文件的权限
  7. 私塾在线java设计模式综合项目实战
  8. 从各方面比较一下各类电脑玩手游吃鸡安卓模拟器
  9. 电脑显示器黑屏|显示器突然黑屏|显示器闪黑屏
  10. 微信H5支付浏览器支付
  11. java点餐app源码_android 点餐app源码(含服务端以及数据库脚本)
  12. EDK2-UEFI开发
  13. 制作自己的iconfont 图片转iconfont
  14. 智能蜂箱管理系统——物联网工程专业软硬结合课设 计算机专业课程设计 大作业 项目(安卓,Springboot后端,网页数据展示前端,ESP8266传输数据,MQTT服务器)
  15. 海有舟可渡、山有路可循‍‍ —— 大学四年圆满落幕
  16. 双向链表插入、删除操作
  17. 亚利桑那大学公开课:【知识产权课程】笔记
  18. 小白学习3D游戏建模从什么软件开始?人物角色建模怎么做?
  19. 牛视系统源码,抖音矩阵系统功能开发定制。I‘m here
  20. Tomcat 8080,8005端口占用问题

热门文章

  1. Logstash的filter插件介绍
  2. ¤转 Mysql双机热备实现
  3. python机器识别追踪_多目标追踪器:用OpenCV实现多目标追踪(C++/Python)
  4. 计算机室内设计职业环境分析,室内设计职业规划书
  5. 《R语言与数据挖掘》⑤高级绘图工具【lattice包】【ggplot2】【交互式】
  6. 走入 Cocos Creator视频教程-姜威-专题视频课程
  7. Kafka topic分区增加副本
  8. Image through Atmospheric Turbulence笔记(一)
  9. Linux下c++/c使用getsockopt()的记录
  10. 为什么浏览器请求一个接口有两次其中一次是Request Method: OPTIONS