Doctype 小纸条:写对一行,浏览器就乖乖进标准模式
58
0
0
别把 Doctype 当成神秘符咒,它只是一行“身份验证码”。
写对了,浏览器按最新标准给你排版;写错或漏写,直接踢进“怪异模式”,旧 bug 集体复活。
1. HTML5 时代:一句话就够
<!DOCTYPE html>大小写随意,放文件第一行,后面随便你写 <html lang="zh-CN">。
现代项目统统用它,简洁、无脑、未来兼容。
2. 老版本“三套娃”:Strict / Transitional / Frameset
HTML 4.01
Strict
不许用废弃标签(<center>、<font>等),逼你 CSS 干活。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">Transitional
允许老标签,给旧站升级过渡用。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">Frameset
唯一官方允许玩框架的版本,现在基本吃灰。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0
语法更狠:标签必须闭合、小写、属性加引号。三套声明跟 HTML 4.01 一一对应,只是把关键字换成 XHTML 1.0 Strict/Transitional/Frameset 并指向 .dtd 文件。
示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">3. 不写 Doctype 会怎样?
浏览器秒切 Quirks Mode(怪异模式):
- 盒模型算成 IE5.5 方式
- 行高、浮动、margin 一堆老 bug 复活
- 同一段 CSS 在不同浏览器里长完全两张脸
一行 <!DOCTYPE html> 就能避免这种穿越,成本 = 0。
4. 结论
新项目:
“<!DOCTYPE html>” 复制粘贴,别犹豫。
维护老代码:
看见 Strict 就用 Strict,看见 Transitional 先叹气,再决定要不要重构;看见 Frameset——
嗯,祝你幸福。
0
快来点个赞吧
发表评论
评论列表