HTML4文档类型声明需严格匹配DTD,如;HTML5简化为,大小写不敏感,遗漏将触发怪异模式。

HTML4 和 HTML5 的文档类型声明怎么写
HTML4 用的是 DTD(文档类型定义),必须严格匹配特定版本;HTML5 则大幅简化,只保留语义化目的。
- HTML4 严格模式:
- HTML4 过渡模式:
- HTML5:
—— 大小写不敏感,但惯例全小写;没有 URI,也不触发任何 DTD 解析
写错或遗漏 会导致浏览器进入怪异模式(Quirks Mode),CSS 盒模型、表格对齐等行为会退回到旧标准,调试时容易误判为样式 bug。
HTML5 新增的语义化标签在 HTML4 里根本不存在
HTML4 几乎全靠 <div> 堆结构,HTML5 引入了明确语义的容器标签,不仅利于可访问性(如屏幕阅读器),也影响搜索引擎解析和开发者协作理解。
<ul>
<li>
<code><header></header>、<nav></nav>、<main></main>、<article></article>、<section></section>、<aside></aside>、<footer></footer> —— 这些在 HTML4 中属于非法标签,IE8 及更早版本连识别都不识别
document.createElement("header") 或引入 html5shiv.js 才能支持 CSS 选择器生效<main></main> 不应出现多次(W3C 明确建议仅一个),而 <section></section> 和 <article></article> 可嵌套,但语义不同:前者是主题分组,后者是独立内容单元(如一篇博客、一条新闻)表单控件和属性在 HTML5 里直接原生支持
HTML4 表单极度依赖 JavaScript 和自定义验证;HTML5 把常用交互逻辑下沉到原生层面,减少脚本负担,也提升移动端体验。
立即学习“前端免费学习笔记(深入)”;
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
- 新输入类型:
<input type="email">、<input type="url">、<input type="date">、<input type="number">—— 在支持的浏览器中自动触发对应软键盘或日期选择器 - 新属性:
required、placeholder、autofocus、pattern(正则验证)、min/max—— 都是布尔或字符串值,无需 JS 即可参与表单校验流程 - 注意:
placeholder不是 label 替代品,它不具语义,且输入后消失;仍需配<label for="..."></label>才符合无障碍要求
HTML5 废弃或限制使用的 HTML4 标签和属性
不是所有 HTML4 写法在 HTML5 中还能“跑起来”,有些被移除,有些被标记为“过时(obsolete)”,虽可能渲染但不推荐,且未来可能被彻底剔除。
- 完全废除:
<font></font>、<center></center>、<u></u>(下划线,除非表示非译术语)、<strike></strike>、<frame>、<frameset></frameset> - 属性废弃:
align(用于<div>、<code><p></p>等)、bgcolor、border(<img alt="html语句的应用_html4与html5语句差异在哪实例说【详解】" >上)、name(<a></a>上,改用id) - 替代方案统一倾向 CSS:
text-align、background-color、border等;语义缺失时优先补 HTML 结构而非样式 hack
实际项目中,即使旧代码没报错,用 align="center" 这类写法也会被现代 Linter(如 ESLint + html-validate)标为警告;更重要的是,这类属性在 Shadow DOM 或 Web Component 封装中可能完全失效。

















