Подтвердить что ты не робот

Могу ли я предотвратить: после того, как псевдоэлемент будет прочитан читателями экрана?

Обратите внимание на следующую разметку:

<label class="required" for="email-address">Email Address <span class="audible">Required</span></label>
<input type="text" id="email-address" placeholder="[email protected]">

Наряду с этим у меня есть следующий css...

   .required:after {
      color: red
      content: "*";
      ......
    }

Когда я фокусирую поле, читатель экрана читает: "Адрес электронной почты требуется" звезда ". Я бы хотел сделать это с помощью css только для отображения визуального *, но я не хочу, чтобы это читали читатели экрана?

Или иначе это достаточно распространенная вещь, что нападающие и пользователи игнорируют звезду или задают настройки. И.Е. Не настоящая проблема?

Есть ли какой-либо возможный способ?

4b9b3361

Ответ 1

Попробуйте это, оно предназначено для чтения с помощью медиа-запроса и скрывает звездочку

@media reader, speech, aural {
    .required:after {
        display: none;
        visibility: hidden;
    }
}

Обновление:

Поскольку поддержка моего первоначального решения, похоже, не настолько хороша, я подумал об альтернативе. Мне пришло в голову, что единственный способ удостовериться, что его не прочитал программа чтения с экрана (без дополнительной разметки), - это вовсе не иметь звездочки! Однако вы можете добавить изображение css, чтобы оно выглядело как звездочка:

.required:after {
    content:'';
    display: inline-block;
    width: .5em;
    height: .5em;
    background-image: url(http://upload.wikimedia.org/wikipedia/commons/b/b5/Asterisk.svg);
    background-size: .5em .5em;    
    vertical-align: top;
    margin-left: .15em;
    margin-top: .1em;
}

http://jsfiddle.net/3a1dvdag/

Ответ 2

Собираюсь выбросить это здесь, так как нет окончательного ответа, и это очень обсуждаемая тема.

Вышеприведенное решение, данное @Sam, в ближайшем будущем будет лучшим вариантом. Пока нет браузеров, у которых есть медиа-запрос @media aural, speech, поэтому, если вы его предоставите, он будет работать только в ближайшем будущем.

Есть ли другой способ скрыть псевдоэлементы из программы чтения с экрана?

Да, с ограничениями. Вы можете использовать символ персональный набор Unicode для частного использования". Поскольку персонажи используются в частных целях, устройства чтения с экрана не могут произносить их и, следовательно, игнорировать символ.

Если это не вариант, попробуйте привязать к ним элементы <span> или <i> с aria-hidden="true". Это не так чисто, как псевдоэлементы, но, по крайней мере, вы полностью контролируете контент.

<button type="button">
    <span class="i i-arrow-down" aria-hidden="true">Label
</button>

Ответ 3

Если вы используете отдельный интервал для своего значка, вы можете применить скрытый тег aria, чтобы предотвратить чтение прошивок. Я не уверен, что это за поддержка.

<label class="required" for="email-address">Email Address 
<span class="icon" aria-hidden="true"></span>
<span class="audible">Required</span>  </label>
<input type="text" id="email-address" placeholder="[email protected]">

Дополнительная информация в спецификации W3C