i标记的Alt或title属性

dch*_*cke 71 html tags font-awesome

我使用font-awesome并显示他们的字体:

<i class="icon-lock"></i>
Run Code Online (Sandbox Code Playgroud)

这将显示一个漂亮的小锁符号.为了让用户知道究竟是什么意思,我尝试添加诸如title和alt之类的属性,但无济于事.

是否有任何属性我可以用于<i>执行与图像和标题链接相同的任务的标记?

Juk*_*ela 138

您可以titlei元素上使用该属性,例如,任何元素

<i class="icon-lock" title="This symbolizes your being locked inside"></i>
Run Code Online (Sandbox Code Playgroud)

它是否有帮助是一个更难的问题.浏览器通常title在鼠标悬停时将属性值显示为"工具提示",但为什么用户将鼠标悬停在图标上?这样的工具提示可用性差; 所谓的CSS工具提示通常效果更好.

屏幕阅读器可以为用户提供对title属性的可选访问,但我不确定他们对具有空内容的元素的处理方式.

  • 当这基本上是 Jukka 的疯狂猜测时,我们应该感到不安的是,这已被接受并得到高度评价。我并不是说 Jukka 发布它是错误的,或者这个答案的存在会造成伤害,但我认为这样一个事实,即“呃,也许`title` 属性会起作用,或者可能不会,谁知道?” 被 120 人认为足够好,这说明了屏幕阅读器支持从大多数 Web 开发人员(包括我,我承认)获得的敷衍努力。作为一个职业,我们需要弄清楚如何比这更严格地解决这些问题。 (6认同)
  • **从可访问性的角度来看,这不是一个好的做法**。如果宿主元素本身不可聚焦(例如按钮、锚点),则并非所有屏幕阅读器都会读取标题属性。建议除了“title”之外还添加视觉上隐藏的文本(例如 Bootstrap 中的“.sr-only”类)。在这里查看很好的例子:https://fontawesome.com/how-to-use/on-the-web/other-topics/accessibility (3认同)
  • 只要元素本身是可选择的,即使没有内容,“title”通常也会被读取 (2认同)

Syl*_*oux 10

随着WAI-ARIA的发展,在使用字体图标时,您可能应该使用以下组合来改善可访问性:

  • 角色表示删除元素的隐式本机角色语义.如果您(ab)使用具有本机语义的元素来提供图标,这一点尤为重要,因为在您的示例中使用i元素(根据规范,"代表备用语音中的文本范围)或情绪[...]").
  • 一个aria-label,用于提供标记元素的字符串值-如果您可以使用浏览器在悬停时显示工具提示,则可以使用本机HTML 标题属性.
  • 一个唱段隐藏属性隐藏生成的内容从辅助技术(如您使用的图标字体的家庭,有一个生成人物:前:后).根据规格:

只有隐藏此内容的行为旨在通过删除冗余或无关内容来改善辅助技术用户的体验时,作者可以谨慎地使用隐藏式隐藏隐藏的Aria-hidden来隐藏辅助技术中可见的内容.使用aria-hidden来隐藏屏幕阅读器中可见内容的作者必须确保将相同或等同的含义和功能暴露给辅助技术.


我不知道你确切的用例,所以我冒昧地使用更简单的案例来提供电话号码.按优先顺序递减,会使用:

<span aria-label="Our phone number">
  <span class="icon-phone" aria-hidden="true"></span>
  +33 7 1234576
</span>

(or any variation implying:
  - an `i` element with a `role` presentation attribute
    instead of the inner `span` element
  - a `title` attribute instead of an `aria-label` attribute)
Run Code Online (Sandbox Code Playgroud)
<span class="icon-phone" 
  aria-label="Our phone number">+33 7 1234576</span>

(or any variation using `title` instead of `aria-label`)
Run Code Online (Sandbox Code Playgroud)
<i class="icon-phone" role="presentation" 
  aria-label="Our phone number">+33 7 1234576</i>

(or any variation using `title` instead of `aria-label`)
Run Code Online (Sandbox Code Playgroud)

请注意,aria-labeltitle属性应描述元素的内容.不是下一个兄弟元素.所以觉得以下解决方案符合规范(即使大多数辅助工具实际上都具有相同的可观察行为,就好像电话号码实际上在span元素内部):

<span class="icon-phone" 
  title="Our phone number"></span>+33 7 1234576
Run Code Online (Sandbox Code Playgroud)


Chr*_*ski 7

您应该使用<span>或沿着这些线的东西.您可以使用该title=""属性在悬停时提供一些文本,如果这是您正在寻找的内容.至于为屏幕阅读器提供可访问性或SEO值,您可以添加以下CSS:

.icon-lock{
    text-indent:-99999px;
}
Run Code Online (Sandbox Code Playgroud)

然后写下你的标记:

<span class="icon-lock">What I want the screen reader to say</span>
Run Code Online (Sandbox Code Playgroud)

  • 你是对的......鉴于`<u>`和`<s>`,我总是发现自己认为`<b>`和`<i>`也是如此,特别是因为他们有`<em>`和`<strong>`,但你是绝对正确的. (2认同)