如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
doctype 和 lang 必须顶格写在第一行,不可有空格、bom 或注释前置,否则触发怪异模式、影响布局、无障碍及 seo;lang 值须用 iana 标准如 zh-cn 或 zh-tw,不得留空或简写。

DOCTYPE 和 lang 必须写在第一行,且不能有前置空格或注释
很多团队在模板生成或 CMS 输出时,会无意中在 前插入 BOM、空格或 HTML 注释(比如构建工具注入的标记),这会导致 IE11 降级到怪异模式,<code><input type="date"> 在旧 Safari 下直接不渲染,屏幕阅读器语种切换失败。
-
lang值必须匹配 IANA 语言子标签,中文站点用zh-CN,繁体用zh-TW或cmn-Hant-TW,不能写zh、cn或留空 - 多语言项目需用 JS 动态更新
document.documentElement.lang,静态值只起初始作用 - CI 流程里加一行检查:
head -c 100 index.html | grep -q "^,确保开头无干扰字符
语义化标签不是“可选装饰”,而是 DOM 可靠性的基础
用 <div class="header"> 替代 <code><header></header> 看似没区别,但实际会让 document.querySelector('header') 返回 null,影响 SSR 渲染逻辑;搜索引擎对 <main></main> 的权重识别比 <div role="main"> 高出 3 倍以上;辅助技术依赖 <code><nav></nav> 自动跳过导航区块。
- 禁止嵌套错误:比如把
<div> 放进 <code><p></p>,浏览器会自动闭合<p></p>,导致 DOM 结构意外断裂 -
<h1></h1>全局只能有一个,且必须在<main></main>内;<h2></h2>到<h6></h6>必须严格按层级嵌套,不能跳级 - 表单控件必须配
<label for="xxx"></label>,否则移动端点击区域缩水 70%,且for属性值必须与对应id完全一致(区分大小写) - 强制小写 + 短横线分隔:用
user-avatar,不用userAvatar或user_avatar - 禁止样式描述类名:
float-left、bg-blue、mt-4(除非是原子 CSS 框架且全项目统一) - 优先使用功能/内容语义:
article-meta、search-input、cart-item-count - 团队共用一份 class 命名词典(JSON 文件),CI 中校验新增 class 是否在词典内
- VS Code 安装
HTMLHint插件,配置规则:强制attr-no-duplication、attr-req-alt、doctype-first - Webpack/Vite 构建时集成
html-validate,失败则中断打包 - 禁止在
里写 JS,所有脚本必须放在底部或带defer/async—— 否则会阻塞首屏渲染,且document.head在执行时可能为空
class 命名不是风格问题,而是跨职能协作的契约
前端写 class="red-btn",UI 改稿把按钮变成蓝色后,这个 class 就成了“谎言”;测试同学写 cy.get('.left-sidebar'),三个月后发现页面改版,“left”已不存在,selector 失效。
HTML 验证不是上线前走流程,而是开发阶段的必经检查
本地开发时忽略 <img> 缺 alt,上线后会被无障碍审计工具标为严重问题;漏写 <meta charset="UTF-8"> 导致乱码,但只在特定用户代理下复现,极难定位。










