当前位置: 首页 > Web前端 > HTML5

HTML5设计原则-2007年

时间:2023-04-05 23:11:57 HTML5

原文: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;来模拟。}实现fallback等多媒体元素将在旧UA上显示回退内容。getElementsByClassName()方法在UA不支持的情况下可以基于脚本实现。元素可能包含隐藏的元素相关联。可以使用文本框或与弹出菜单相关联的文本框来实现此组合框回退,而不是为了相同的目的发明新事物。但有时,新用例需要一种新方法而不是扩展旧方法。contenteditable=""已经在UA上使用和实现了,没必要再去发明一个新的feature。2.4.为使用某种做法铺平道路它已在作者中广泛流传,接受它比禁止它或发明新东西更可取作者已经在HTML中使用
语法而不是
,允许没有坏处这个2.5。进化而不是革命革命有时它会让世界变得更美好。然而,改进设计通常比丢弃它更好。这样作者就不用学习新的模型内容,活得更久了。更准确地说,这意味着设计师设计的功能可以让旧内容享受其好处,而无需进行不相关的更改。实现应该能够在不开发整个独立模式的情况下向现有代码添加新功能切换到XML语法需要进行全局更改,从而继续支持经典的HTML语法3.实用程序这些原则要求确保HTML有效地实现预期目的设计3.1。解决现实世界的问题对规范的更改应该解决现实世界的问题。不基于现有需求的抽象结构设计不如解决具体问题的实用设计。在可能的情况下,应解决常见问题3.2。选区的优先级在发生冲突的情况下,用户利益优先于作者优先于实施者优先于专业人员优先于纯理论。换句话说,从权重上来说,应该是用户成本和难度>实施者成本>规范作者成本>理论提案而已。3.3.设计安全性以确保特性不会破坏Web安全模型,最好直接在规范中解决安全问题。不同站点之间的跨文档通信很有用,但松散的版本可能会使用户数据面临风险。只有在不违反安全约束的情况下才允许跨文档消息。3.4.关注点分离HTML应该允许分离内容和表示。出于这个原因,结构标记通常优于纯显示标记。此外,结构标记是达到目的的一种手段,如果不是目的,则需要深入的细节和语义编码。为不同的媒体定义合理的默认显示就足够了。HTML在语义表达和实用性之间取得了平衡。标记中元素和属性的名称可能是缩写的而不是精确的。fullarticle元素定义单个文章,而不是它如何呈现的细节。一篇杂志文章可能是页面上唯一的文章,采用多栏格式,而在博客网站上,一个页面上可能有多篇文章,显示为带边框的框与其他程序代码的可行性保持一致可以对文档树进行操作,允许实现之间的兼容性差异,但应该尽可能小HTML(text/html)解析器http://www.w3.org/1999/xhtml...4.交互性这些原则是用于促进HTML互操作性4.1。显式行为最好明确定义内容作者可以依赖的行为,而不是模糊的或实现定义的行为。这使得在各种UA中编写内容变得更加容易。当然,4.2的实现仍然可以自由地对用户界面和渲染质量进行改进。避免不必要的复杂性。简单的解决方案比复杂的更受欢迎。简单的特性也更容易实现、更可操作、更高效。便于作者理解。但是,这不能是违反其他原则4.3的接口。错误处理Gracefulerrorrecovery优于hardfault,这样编程的错误就不会暴露给用户5.通用访问特性的设计必须是通用的。此类别涵盖各种相关原则5.1媒体独立设计的功能必须跨平台、设备和媒体工作。这并不是说如果媒体或平台不支持它,就不要使用该功能。例如,某些交互功能不会被删除,因为它们无法显示在打印文档上。HTML的可重流性使其更适合可变屏幕尺寸而不是精确字形位置的表示超链接不适用于印刷文档,但我们没有理由删除a元素5.2。支持世界语言可在世界范围内以所有语言发布。但这并不是说它是一个禁止不支持所有语言的功能的平衡语言系统。将多个翻译打包到一个文件中的功能超出了这个Unicode支持允许世界上大多数语言,包括不同语言的混合文本意大利语很有用,因为它适用于许多二进制脚本,尽管许多脚本不喜欢概念。同样,ruby对许多脚本很有用,尽管它对焦点元素内容中的文本比属性内容中的文本有更好的CJK语言支持;ruby注释可以插入元素内容,以及dir属性和bdo元素,以防Unicode双向算法无法正确排序相邻的混合方向文本5.3.可用性特性必须设计为可供残障用户使用。对所有人可用很重要。但这并不是说如果不是每个人都可以使用该功能,就可以将其排除在外,而是提供一种替代机制。图像元素对盲人是不可见的,因此可以提供替代文本。progress元素本质上是可访问的,因为它有一个清晰的进度条。语义,允许映射到可访问的api