原文:https://www.w3.org/TR/html-de...摘要HTML5是万维网核心语言HTML的第五个主要版本。本文档描述了HTML开发工作组的一组使用指南。这些原则在设计HTML时在兼容性、可用性和互操作性方面提供了指导。1.简介HTML工作组有来自许多不同社区的代表,包括WHATWG和其他W3C工作组。whatwg下的HTML5工作,以及过去几年中各种W3C标准的大部分工作,都是基于不同的目标和良好设计的不同想法。为了取得有益的进展,我们需要就本小组1.1的目标达成一些基本共识。DocumentandImplementationConsistency很多语言规范都会定义一套有效文档的一致性要求,以及相应的处理有效文档的实现一致性要求。虽然HTML5在实现非标准文档的一致性方面具有一些不同寻常的双重性,但我们能够为作者提供一种相对清晰易懂的语言。它还支持使用旧的或非标准结构的现有文档,还允许进行更多的交互式错误处理。一些设计原则更多地适用于内容符合要求(符合语言,一致语言),其他设计原则更多适用于基于实现的一致性要求(支持语言,支持语言),支持语言是一致性语言的严格超集,会有相当大的overlap2.Compatibility解释兼容性的方式有很多种,有时会使用“向前兼容”和“向后兼容”等术语,但往往这些术语的含义并不明确。本节中的原则讨论了兼容性的不同方面。2.1SupportExistingContent此原则适用于并支持语言现有内容通常依赖于所需的用户代理和行为来实现预期。实施规范必须确保它能够处理绝大多数现有内容。特别是,应该可以将现有的HTML视为HTML5,并且无需模式切换即可满足作者和用户的期望。内容取决于浏览器可能的多种形式。它可能依赖于早期HTML规范的元素、属性或API,或一些专有功能。它可能依赖于特定的错误处理规则。在极少数情况下,可能会依赖早期HTML规范中的非标准实现功能。在考虑更改遗留功能或表示时,需要针对当前实现和作者期望考虑以下问题:依赖内容是否真正用于消费,而不是仅仅出现在测试用例或示例中?依赖内容是否出现在公共网络或用户访问受限的内部网络依赖内容旨在影响多个流行的UA,或仅指向某一类型的UA,或非常老旧或冷门的UA建议更改和更改的好处应根据这些标准权衡销毁内容的成本。在某些情况下,如果非标准特性或行为满足有效的用户场景,则可能需要将其添加到符合语言2.1.1中。示例许多网站使用损坏的标记,例如嵌套不当的元素(abc),并且用户将希望寄托在UA的错误处理上。对于这种内容处理,我们需要定义符合预期的处理。一些网站使用元素来显示下划线效果。2.2优雅降级这个原则主要用于一致性语言。新的可能会导致旧UA出现问题,或者不提供优雅的回退方法。HTML5文档一致性要求应该被设计为在旧的或无能力的UA上优雅地降级,即使使用了新的元素、属性、API和内容模型。考虑所有UA,包括一些非常旧的浏览器版本或极不受欢迎的工具是不可取的。当然以下几种类型的UA需要关注当前最主流浏览器的版本。较旧但流行的主流浏览器版本旨在满足特定需求或解决特定市场。顶级UA,例如辅助技术、移动浏览器或非典型媒体,例如纯文本终端或印刷UA会降低质量。例如,新的脚本API将不适用于无脚本UA。但是很多场景可以使用下面的方法。一个新的元素或属性可以提供额外的语义,这样当它不被理解时就不会失去基本的功能。一个新的脚本方法或属性可以在使用之前使用ECMAScript内省工具完成。测试新元素或属性可能会提供语义和使用css的简单默认呈现,以便额外的小样式表可以优雅地降低新元素、属性或脚本API的行为,这些API可以通过额外的脚本来模拟,尽管脚本方法的性能可能有所不同和可用性级别,一个新元素可能需要高度专业化的渲染,允许不理解它的UA提供不同的内容作为后备。此列表并不详尽;在某些情况下,稍微复杂一点的方法更有效2.2.1.示例不相关属性的默认显示可以通过css规则[irrelevant]{display:none;来模拟。}实现或等多媒体元素将在旧UA上显示回退内容。getElementsByClassName()方法在UA不支持的情况下可以基于脚本实现。
