Атрибут alt або title для тегу i


83

Я використовую чудовий шрифт і відображаю їх шрифти так:

<i class="icon-lock"></i>

Це відобразить приємний маленький символ замка. Щоб користувач знав, що саме це означає, я спробував додати такі атрибути, як title і alt, але безуспішно.

Чи є якийсь атрибут, який я можу використовувати для <i>тегу, який виконує те саме завдання, що і alt для зображень та заголовка для посилань?


1
Багато веб-сайтів FontAwesome також використовують Bootstrap. Якщо так, використовуйте .sr-onlyна окремому <span>.
rybo111

Хороший приклад із візуально прихованим внутрішнім текстом: fontawesome.com/how-to-use/on-the-web/other-topics/…
Hrvoje Golcic

Відповіді:


155

Ви можете використовувати titleатрибут на iелементі, як будь-який елемент, наприклад

<i class="icon-lock" title="This symbolizes your being locked inside"></i>

Чи це допомагає, є складнішим питанням. Браузери зазвичай показують titleзначення атрибута як “підказку” під час наведення курсора миші, але чому користувач наводить мишу на піктограму? І такі підказки погано використовуються; так звані підказки CSS часто працюють краще.

Зчитувачі екрану можуть надавати користувачеві необов’язковий доступ до titleатрибутів, але я не впевнений, що вони роблять з елементами з порожнім вмістом.


1
titleзазвичай читається, навіть без вмісту, доки сам елемент можна вибрати
Майк

зауважте, що <i>теги, як правило, не можна вибрати, якщо ви не додасте до них tabIndex.
dandavis

я додав заголовок у піктограму fa <i class = "fa fa-info-circle" aria-hidden = "true" title = "heeeeeelp"> </i>, але не працює
GomuGomuNoRocket

4
Нас повинно турбувати те, що це стало загальновизнаним і високо оціненим, коли це в основному дикі спекуляції з боку Джукки. Я не кажу, що Юкка помилився, розмістивши її, або що наявність цієї відповіді завдає шкоди, але я думаю, що той факт, що відповідь, яка відповідає "Е, можливо, titleатрибут спрацює, а може, ні, хто знає? " 120 людей визнали його достатньо хорошим, щоб проголосувати за нього, ілюструє нетривалі зусилля, які підтримує програма зчитування екрану від більшості веб-розробників (я, зізнаюся, включаю). Як професія, нам потрібно з’ясувати, як вирішити ці проблеми більш суворо, ніж це.
Mark Amery

3
Не найкраща практика з точки зору доступності . Не всі зчитувачі з екрана читатимуть атрибут title, якщо елемент хоста не може бути сфокусованим (наприклад, кнопка, прив'язка). Рекомендується додавати додатково до titleвізуально прихованого тексту (наприклад, .sr-onlyклас у Bootstrap). Перегляньте хороші приклади тут: fontawesome.com/how-to-use/on-the-web/other-topics/…
Hrvoje Golcic

13

З розвитком WAI-ARIA , використовуючи піктограми шрифтів, ви, мабуть, повинні використовувати комбінацію з наведеного нижче для покращення доступності:

  • Роль презентація , щоб видалити неявну нативную роль семантику елемента. Це особливо важливо, якщо ви (ab) використовуєте елемент із власною семантикою для надання піктограм, як це відбувається у вашому прикладі з використанням елемента i (який, відповідно до специфікацій, "представляє простір тексту в альтернативному голосі або настрій [...] " ).
  • Арія мітки , щоб забезпечити строкове значення , яке позначає елемент -або- нативного HTML заголовка атрибута , якщо ви добре з браузером відображаються підказки при наведенні покажчика миші.
  • Арія-прихований атрибут , щоб приховати генерується вміст з допоміжних технологій (як ви використовуєте сімейство шрифтів значка, є згенерований характер: перед тим з: після). Відповідно до специфікацій:

Автори МОЖУТЬ із обережністю використовувати прихований за допомогою aria приховування видимо відтвореного вмісту від допоміжних технологій лише в тому випадку, якщо приховування цього вмісту має на меті покращити роботу користувачів допоміжних технологій шляхом видалення зайвого або стороннього вмісту. Автори, які використовують 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)
<span class="icon-phone" 
  aria-label="Our phone number">+33 7 1234576</span>

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

(or any variation using `title` instead of `aria-label`)

Зверніть увагу, що атрибути aria-label та title повинні описувати зміст елемента. Не наступний братський елемент. Тому я вважаю, що наступне рішення не відповідає специфікаціям (навіть якщо більшість інструментів доступності насправді мали б таку саму спостережувану поведінку, як якщо б номер телефону був насправді всередині spanелемента):

<span class="icon-phone" 
  title="Our phone number"></span>+33 7 1234576

7

<span>Замість цього слід використовувати або щось подібне. Ви можете використовувати title=""атрибут, щоб навести якийсь текст при наведенні, якщо це те, що ви шукаєте. Що стосується забезпечення доступності для читачів з екрану або значення SEO, ви можете додати наступний CSS:

.icon-lock{
    text-indent:-99999px;
}

А потім напишіть свою розмітку так:

<span class="icon-lock">What I want the screen reader to say</span>

<i>не застаріло в HTML 4.01.
Джим

2
Ви маєте рацію ... з огляду на те, що <u>і <s>було, я завжди вважаю себе таким, що думав <b>і <i>був, тим більше, що вони мають <em>і <strong>, але ви абсолютно праві.
Кріс Соболевський

3

<i>теги призначені для розмітки тексту. Ви змінюєте семантичне значення цього тегу на щось, що не має нічого спільного з використанням курсиву (і навіть курсив - погана ідея). Ви повинні використовувати SPANзамість цього.

Курсивні елементи не підтримують altатрибути, а IMGелементи підтримують. Якщо ви хочете ALTатрибут, використовуйте зображення.


Вражаючі шрифтом інструкції підказують вам використовувати <i>, тому, мабуть, вам слід сказати, що піде не так, якщо ви зробите це так. Використання чогось (у даному випадку <i>) способом, який спочатку не передбачався, має ризики, але в цьому випадку цей ризик пом'якшився тим, що тисячі авторитетних сайтів із сотнями мільйонів користувачів вже використовують чудові шрифти.
цезоїд

2

Я думаю, що роль для шрифтів, які діють як зображення, повинна бути зарезервована для role = "img". Потім це можна використовувати з aria-label = "alt-text". Це працює завдяки алгоритму доступного імені ARIA. Див .: Техніка Aria з використанням ролі Img .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.