Що таке sr-тільки у Bootstrap 3?


748

Для чого sr-onlyвикористовується клас ? Це важливо чи можна його зняти? Добре працює без.

Ось мій приклад:

<div class="btn-group">
    <button type="button" class="btn btn-info btn-md">Departments</button>
    <button type="button" class="btn btn-info dropdown-toggle btn-md" data-toggle="dropdown">
    <span class="caret"></span>
    <span class="sr-only">Toggle Dropdown</span>
    </button>
    <ul class="dropdown-menu" role="menu">
        <li><a href="#">Sales</a></li>
        <li><a href="#">Technical</a></li>
        <li class="divider"></li>
        <li><a href="#">Show all</a></li>
    </ul>
</div>

Відповіді:


772

Відповідно до документації bootstrap , клас використовується для приховування інформації, призначеної лише для читачів екрана, від макета відображеної сторінки.

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

Ось приклад використовуваного стилю:

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}

Це важливо чи можна його зняти? Добре працює без.

Важливо, не знімайте його.

Ви завжди повинні враховувати зчитувачі екрану з метою доступності. Використання класу все одно приховуватиме елемент, тому ви не повинні бачити візуальної різниці.

Якщо вам цікаво читати про доступність:



2
У статті, на яку ви посилаєтеся, @katranci не вистачає кількох пунктів, наприклад, проблеми зі вмістом rtl. Відповідь тут виглядає краще.
Крістоф

1
@Christophe Я все-таки рекомендую цю статтю для розуміння концепції. Незважаючи на те, що це не пояснює проблеми зі вмістом rtl, він містить перелік різних методик, до яких також належитьclipping
katranci

9
Якщо чесно, мова дуже заплутана the class is used to hide information used for screen readers:? Це ховається від читачів екрану? Або він просто не відображається в браузері? Ясніше, якщо в документації сказано щось на кшталт "клас sr-only означає, що елемент призначений лише для зчитування екрану, і не відображається в браузері".
Stack0verflow

2
Я не думаю, що це зовсім заплутано, але це чітко говорить про те, що клас використовується для приховування інформації, яка призначена лише для того, щоб їх бачили читачі екрану.
Лі

34

Як сказав JoshC, клас використовується для приховування інформації, що використовується для читачів екранів. Але не тільки приховувати мітки, ви можете розглянути можливість приховати від прозорливого користувача внутрішнє посилання "перейти до основного контенту", що бажано для незрячих користувачів, якщо у вас є складна навігація або реклама до основного вмісту.

Якщо ви хочете, щоб ваш сайт ще більше взаємодіяв із читачами екранів, використовуйте стандартизовані атрибути ARIA W3C, і я, безумовно, рекомендую відвідати онлайн-курс Google , який займе лише 1-2 години або принаймні переглянути 40-хвилинне відео Google .

За даними Всесвітньої організації охорони здоров’я, 285 мільйонів людей мають порушення зору. Тому важливо зробити доступний веб-сайт.

ОНОВЛЕННЯ 2019:

Як розробники, ми повинні робити доступний вміст, який просто працює для всіх нестандартних, а не спеціально для цільових екранів. Це не завжди можливо, але будьте обережні, використовуючи налаштування ARIA та "лише для читання екрана" . Не робіть цього, якщо ви не повністю розумієте цього. Неправильна реалізація може бути набагато гіршою, ніж взагалі її використання. Прочитайте посібник для розробників доступності на поганих прикладах ARIA . Там ви знайдете також цілком доступні компоненти / віджети, які не потребують втручання "лише для читання екрана".


5
Трохи більше інформації ВООЗ : "За оцінками, 285 мільйонів людей з вадами зору по всьому світу: 39 мільйонів сліпі, а 246 мають слабкий зір. Близько 90% людей із вадами зору в світі живуть у місцях з низьким рівнем доходу. 82% людей, які живуть із сліпотою, є віком від 50 років ».
Катон Малий

29

Я знайшов це на прикладі навбар і спростив його.

<ul class="nav">
  <li><a>Default</a></li>
  <li><a>Static top</a></li>
  <li><b><a>Fixed top <span class="sr-only">(current)</span></a></b></li>
</ul>

Ви бачите, який із них вибрано ( sr-onlyчастина прихована):

  • За замовчуванням
  • Статичний верх
  • Фіксований верх

Ви чуєте, який з них вибрано, якщо ви користуєтеся екраном:

  • За замовчуванням
  • Статичний верх
  • Фіксований верх (поточний)

Внаслідок цієї методики сліпі люди повинні легше переходити на ваш веб-сайт.


3
Як незрячі люди читають цей поточний текст? Чи є в них спеціальний вид екрану?
Сантош

6
Вони використовують зчитувач екрану, про що йдеться у цій відповіді. Це програма, яка читає вміст екрану, звідси "Ви чуєте, який з них вибрано, якщо ви користуєтеся зчитувачем екрана :".
IronSean

Ви можете використовувати розширення Chrome ChromeVox, щоб отримати досвід читання екрана. Це так просто
Хрвой Голчич

12

.sr-onlyце назва класу, спеціально використовується для читачів екранів. Ви можете використовувати будь-яке ім’я класу, але .sr-onlyдосить часто використовується. Якщо ви не переймаєтесь розвитком з урахуванням відповідності, його можна буде видалити. Це не вплине на користувальницький інтерфейс, якщо його видалити, оскільки CSS для цього класу не видно для браузерів настільних та мобільних пристроїв.

Здається, тут бракує деякої інформації про використання .sr-onlyдля пояснення її мети та використання для читачів екрану. Перш за все, дуже важливо завжди пам’ятати користувачів з обмеженими можливостями. Порушення - мета 508 відповідності: https://www.section508.gov/ , і чудово, що завантажувальна програма враховує це. Однак використання .sr-onlyне лише того, що потрібно враховувати для дотримання 508. У вас є використання кольору, розміру шрифтів, доступність через навігацію, дескриптори, використання арії та багато іншого.

А щодо .sr-only- що насправді робить CSS? Існує кілька дещо різних варіантів CSS, які використовуються для .sr-only. Одне з небагатьох я використовую нижче:

.sr-only {
    position: absolute;
    margin: -1px 0 0 -1px;
    padding: 0;
    display: block;
    width: 1px;
    height: 1px;
    font-size: 1px;
    line-height: 1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    border: 0;
    outline: 0;
    }

Наведений вище CSS приховує вміст у настільних та мобільних браузерах, обгорнутих цим класом, але його бачить читач екранів, як JAWS: http://www.freedomscientist.com/Products/Blindness/JAWS . Приклад розмітки:

<a href="#" target="_blank">
    Click to Open Site
    <span class="sr-only">This is an external link</span>
</a>

Крім того, якщо елемент DOM має ширину і висоту 0, елемент DOM не бачить. Ось чому вищезгаданий CSS використовує width: 1px; height: 1px;. Використовуючи display: noneта встановивши свій CSS на height: 0та width: 0, елемент DOM не сприймається, і тому є проблематичним. Наведений вище CSS width: 1px; height: 1px;- це не все, що ви робите, щоб зробити вміст непомітним для настільних та мобільних браузерів (без цього overflow: hiddenваш вміст все одно відображатиметься на екрані) та видимий читачам екрану. Приховування вмісту з настільних і мобільних браузерів здійснюється за допомогою додавання зміщення width: 1pxта height: 1pxпопереднього згадування за допомогою:

position: absolute;
margin: -1px 0 0 -1px; 
overflow: hidden;

Нарешті, щоб мати дуже гарне уявлення про те, що читач екрана бачить і передає його обмеженому користувачеві, вимкніть стилізацію сторінки для вашого браузера. Для Firefox ви можете це зробити, перейшовши до:

View > Page Style > No Style

Я сподіваюся, що надана тут інформація корисна для когось, крім інших відповідей.


7

Забезпечує, що об’єкт відображається (або повинен бути) лише читачам та подібним пристроям. Це надає більше сенсу в контексті іншого елемента з атрибутом aria-hidden = "true" .

<div class="alert alert-danger" role="alert">
  <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
  <span class="sr-only">Error:</span>
  Enter a valid email address
</div>

Glyphicon відображатиметься на всіх інших пристроях, слово Error: на читачах тексту.


1
Моє враження, що aria-label = "Помилка" зробить те саме, але буде простішим?
Кевін

6

.sr-onlyКлас приховує елемент для всіх пристроїв , крімscreen readers:

Перейти до основного вмісту Комбінуйте .sr-only з .sr-only-focusable, щоб знову показати елемент, коли він зосереджений

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