DOCTYPE详解
什么是DTD?
SGML引入了文档类型的概念,并由此引入了文档类型定义(Document Type Definition: DTD)。文档类型定义 (DTD) 实际上就是一套关于标记符的语法规则,它包含了对元素的定义,指出可以在文档中使用哪些标记符, 它们应该按什么次序出现, 哪些标记符可以出现于其它标记符中, 哪些标记符有属性, 等等。属于某种类型的文档,可以通过一个应用程序来解析,检查是否所有的元素都被定义以及元素出现的次序是否正确。属于同一种类别的文档可以按照一致的方式来处理。
什么是DOCTYPE?
document type文档类型的缩写,用来指定XHTML和HTML版本,告知浏览器用什么标准解析这个文档。
DOCTYPE不存在或格式不正确会导致文档以兼容模式呈现
DOCTYPE语法?
语法格式
<!DOCTYPE 顶级元素 可用性 "注册//组织//类型 标签 版本 类型定义//语言" "url">
格式详解
- ! 表示这不是一个html元素
- 顶级元素:指定 DTD 中声明的顶级元素类型
- 可用性:指定正式公开标识符(FPI)是可公开访问的对象还是系统资源。默认PUBLIC,可公开访问的对象。SYSTEM系统资源,如本地文件或URL。
- 注册:指定组织是否由国际标准化组织(ISO)注册。 + (默认),组织名称已注册。 - 未注册。IETF和(W3C)是非注册的ISO组织。
- 组织:指定表明负责由 !DOCTYPE 声明引用的DTD的创建和维护的团体或组织的名称,如W3C。
- 类型:指定公开文本类,即所引用的对象类型。默认DTD。
- 标签:指定公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。默认HTML。
- 定义:指定文档类型定义
- Frameset 一种专门针对框架页面所使用的dtd,当页面中含有框架元素时,就要采用这种dtd。
- Strict 一种要求不很严格的,允许在html中使用html 4.01的标识,排除所有W3C专家希望逐步淘汰的代表性属性和元素。
- Transitional 包含除frameSet元素的全部内容。一种要求不很严格的,允许在html中使用html 4.01的标识。
- 语言:指定公开文本语言,即用于创建所引用对象的自然语言编码系统。该语言定义已编写为 ISO 639语言代码(大写两个字母)。默认EN英语。
- URL:指定所引用对象的位置
例子
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
//doctype首先根据-//W3C//DTD HTML 4.01 Transitional//EN查找相应引用对象,找不到则使用后面的url(这是永久存在的)
HTML5特殊性
HTML5 不基于 SGML,因此不需要对DTD进行引用,但是需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式来运行);而HTML4.01基于SGML,所以需要对DTD进行引用,才能告知浏览器文档所使用的文档类型。
标准模式vs怪异模式?
模式可以通过document.compatMode获得(CSS1Compat标准模式,BackCompat怪异、兼容模式)
怪异模式quirks mode
让IE的行为与(包含非标准特性的)IE5相同。这是一种比较宽松的向后兼容的模式。混杂模式通常模拟老式浏览器的行为,以防止老站点无法工作。PS:浏览器按照自己的方式解析代码
标准模式standards mode
标准模式的排版和JS运作模式都是以该浏览器支持的最高标准运行 PS:浏览器按照 W3C 标准解析代码
准标准模式almost standards mode
这种模式下的浏览器特性有很多都是符合标准的,不标准的地方主要体现在处理图片间隙的时候(在表格中使用图片时问题最明显)。
超级标准模式
IE8引入的一种新的文档模式,超级文档模式可以让IE以其所有版本中最符合标准的方式来解释网页内容。
如何触发以上模式详见https://hsivonen.fi/doctype/#handling
DOCTYPE详解的更多相关文章
- 免费的HTML5连载来了《HTML5网页开发实例详解》连载(三)DOCTYPE和字符集
在2.1.2节中通过新老DOCTYPE的对比,读者可以清晰地看到HTML 5在精简旧有结构上做出的努力.DOCTYPE在出现之初主要用于XML中,用作描述XML允许使用的元素.属性和排列方式.起初HT ...
- [原创]mybatis详解说明
mybatis详解 2017-01-05MyBatis之代理开发模式1 mybatis-Dao的代理开发模式 Dao:数据访问对象 原来:定义dao接口,在定义dao的实现类 dao的代理开发模式 只 ...
- org.apache.log4j.Logger详解
org.apache.log4j.Logger 详解 1. 概述 1.1. 背景 在应用程序中添加日志记录总的来说基于三个目的 :监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
- 基于H5的微信支付开发详解
这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...
- Web.xml详解(转)
这篇文章主要是综合网上关于web.xml的一些介绍,希望对大家有所帮助,也欢迎大家一起讨论. ---题记 一. Web.xml详解: (一) web.xml加载过程(步骤) 首 ...
- ****基于H5的微信支付开发详解[转]
这次总结一下用户在微信内打开网页时,可以调用微信支付完成下单功能的模块开发,也就是在微信内的H5页面通过jsApi接口实现支付功能.当然了,微信官网上的微信支付开发文档也讲解的很详细,并且有实现代码可 ...
- JQuery数组详解(含实例)
<!doctype html>jQuery数组处理详解(含实例演示)@Mr.Think 演示所用数组 var _mozi=['墨家','墨子','墨翟','兼爱非攻','尚同尚贤']; 1 ...
- jQuery Validate验证框架详解
转自:http://www.cnblogs.com/linjiqin/p/3431835.html jQuery校验官网地址:http://bassistance.de/jquery-plugins/ ...
随机推荐
- vi编辑器设置行号可见
vi 设置行号 需要切换到命令模式下,输入set number :set number 按下回车即可
- iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用
目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 多线程的四种解决方案:pthread,NSThread,GCD,N ...
- java时间类型转换 JsonValueProcessor
问题描述: java里面时间类型转换成json数据就成这样了:"createTime":{"date":30,"day":3,"h ...
- codeforces round 422 div2 补题 CF 822 A-F
A I'm bored with life 水题 #include<bits/stdc++.h> using namespace std; typedef long long int LL ...
- rsync(一):基本命令和用法
以下是rsync系列篇: 1.1 说在前面的话 rsync官方网站: https://www.samba.org/ftp/rsync/rsync.html rsync是可以实现增量备份的工具.配合任务 ...
- 【旧文章搬运】PspCidTable攻与防
原文发表于百度空间,2009-03-29========================================================================== PspCi ...
- 出现ImportError: No module named win32api异常
ImportError: No module named win32api出现异常 实际是需要安装和自己python兼容的win32all 在http://starship.python.net/cr ...
- 装饰器模式(Decorator) C++
装饰器模式是比较常用的一种设计模式,Python中就内置了对于装饰器的支持. 具体来说,装饰器模式是用来给对象增加某些特性或者对被装饰对象进行某些修改. 如上图所示,需要被装饰的对象在最上方,它自身可 ...
- vmstat命令的使用
vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程.内存.I/O等系统整体运行状态. 语法 vmstat(选项)(参数) 选项 -a:显 ...
- logging日志类
#! /usr/bin/env python #coding=utf-8 import logging,os class Logger: def __init__(self, path,clevel ...