悟夕导航

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
快来点个赞吧

发表评论

隐私评论

评论列表

来写一个评论吧