使用<sup>
标记指示权力的正确方法是什么?在屏幕阅读器中,3<sup>2</sup>
不会只读为三 - 二或三十二吗?似乎必须有一种更容易实现的方法。
答案 0 :(得分:6)
HTML中没有其他标记元素表示权限。即使sup
元素也不代表指数;它意味着上标,反过来可能意味着不同的东西。根据HTML5草案,只有当这些元素的缺席会改变内容的含义时,才应使用sup
和sub
。但他们仍然会展示像<span lang="fr"><abbr>M<sup>lle</sup></abbr>
这样的例子,其中上标是风格的。
sup
的处理方式因浏览器而异,但我们真的不能指望浏览器将3<sup>2</sup>
读为“三个上标二”或“三个二级”。如果他们这样做,M<sup>lle</sup>
听起来真的很奇怪。
可以对上标字符的使用进行类似的评论,例如“²”。它们固有的含义是上标,而不是表示指示。
这也意味着您可以合理地考虑使用其他标记,例如3<span class=sup>2</span>
。 span
元素在语义上是空的,但它并不比具有“表示语义”的span
差。这样做的原因可能是there is no really satisfactory way to style sup
elements;与span
一起,你从一张干净的桌子开始。
答案 1 :(得分:3)
一般情况,如果subscript/superscript存在Unicode等效项,则应该直接使用该字符而不是sub
/ { {1}}元素(它不是必须,只是推荐,所以继续使用你喜欢的任何内容)。
您可以在这些维基百科文章中找到一些下标/上标的Unicode字符:
sup
,¹
和²
)如果将字符集设置为UTF-8等Unicode编码,则可以直接在文档中输入(或复制/粘贴)这些字符。 HTML5示例:³
。否则你会使用character entities。
例外:在数学上下文中,应使用MathML <meta charset="utf-8">
/ msub
(所以请勿使用这些特殊的下标/上标Unicode字符)。您可以在math
元素中的HTML5中使用MathML。
这两个“应该”的来源:Unicode in XML and other Markup Languages: 5.6 Superscripts and Subscripts(via blog post in German)
似乎必须有一种更容易实现的方法。
通过使用msup
/ sub
元素或使用相关的Unicode字符标记这些下标/上标等价物,您正在完成您的工作:告诉用户代理“意义”,所以他们可以知道如何处理文本,例如用于文档内搜索(浏览器中的“CTRL + f”),文本到语音(屏幕阅读器),网络搜索(搜索引擎),......
如果屏幕阅读器无法正确阅读/宣布sup
或3²
,那么这将是一个(严重的)错误,他们应该修复。
此类用户代理的唯一问题是,如果人们滥用这些字符/元素。它在这种情况下并不相关,但也许对其他读者来说:当下标/上标仅为风格时(并且通过下标/上标没有新的含义),您应该使用CSS(而不是特殊的Unicode字符或{{1} } / 3<sup>2</sup>
元素):vertical-align与sub
/ sup
(您还必须调整字体大小。请参阅this answer以查看其他字体问题。)