дисплей: нет против видимости: скрыто против текстового отступа: 9999 Как программа чтения с экрана ведет себя с каждым из них? - PullRequest
41 голосов
/ 18 ноября 2009

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

Ответы [ 5 ]

34 голосов
/ 18 ноября 2009

см .: http://css -discuss.incutio.com /? Page = ScreenreaderVisibility

Дисплей: нет: не будет ни виден, ни услышан. *
видимость: скрыто: не будет ни виден, ни услышан. *
текстовый отступ: 9999: не будет виден, но будет услышан.

  • Большинство программ чтения с экрана не «говорят». Отображение: отсутствует и Видимость: скрыто , но есть несколько программ чтения с экрана, таких как pwWebSpeak и HtReader, которые будет читать даже эти тоже.
16 голосов
/ 24 мая 2011

В A List Apart есть хорошее объяснение по этому поводу. http://www.alistapart.com/articles/fir/ Это зависит от продукта.

PRODUCT                         DISPLAY: NONE       VISIBILITY: HIDDEN
Hal version 5.20                Does not read       Reads
IBM Home Page Reader 3.02       Does not read       Does not read
Jaws (4.02, 4.50, 5.0 beta)     Reads               Reads
OutSpoken 9                     Does not read       Does not read
Window-Eyes 4.2                 Does not read       Does not read
9 голосов
/ 18 ноября 2009

Очень хорошая сводка того, как программы чтения с экрана интерпретируют эти свойства: WebAIM .

В двух словах, visibility: hidden и display:none будут скрывать текст от программ чтения с экрана так же, как это делают другие. Все остальные методы будут «видны» для программы чтения с экрана.

2 голосов
/ 21 ноября 2013

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

Техника H5BP работает в FF, Webkit, Opera и IE6 +

.visuallyhidden {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}
0 голосов
/ 18 октября 2016

Полное Ответ здесь, чтобы убедиться, что Chrome не показывает автошоу / автозаполнение полей ввода. На моей веб-странице («Новый пользователь») поле телефона и поле ввода пароля автоматически заполнялись кэшированными данными. Чтобы избавиться от этого, я создал два фиктивных поля и дал им класс, который делает их невидимыми для пользователя. Функция jquery для отображения, а затем скрытия их после дроби.

Функция Jquery для отображения и скрытия:

$().ready(function() {
    $(".fake-autofill-fields").show();
    // some DOM manipulation/ajax here
    window.setTimeout(function () {
        $(".fake-autofill-fields").hide();
    }, 1000);
});

Класс:

.fake-autofill-fields
{ 

     border: none;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px; 
}

Поля ввода:

<input style="display:none" type="text" class="fake-autofill-fields" name="fakeusernameremembered"/>
<input style="display:none" type="password" class="fake-autofill-fields" name="fakepasswordremembered"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...