FedyaAsker
@FedyaAsker
Постоянно что то не понимаю...

Как правильно доступно прятать лэйблы у инпутов для IE11?

Подскажите пожалуйста, как правильно прятать лэйблы, чтобы они оставались доступны для скринридеров и адекватно вели себя в IE11?
------------------------
Адекватное поведение современных браузеров
5cbca5a64c063896062213.gif
Каличный IE11
5cbca5ccb0018241860460.gif

------------------------
HTML
<p>
  <label class="visually-hidden" for="user-login">Логин</label>
  <input class="user-login" id="user-login" type="text" name="login" placeholder="Логин">
</p>
<p>
  <label class="visually-hidden" for="user-password">Пароль</label>
  <input class="user-password" id="user-password" type="password" name="password" placeholder="пароль">
</p>


В стилях использую такой вариант visually-hidden
CSS
.visually-hidden:not(:focus):not(:active),
input[type="checkbox"].visually-hidden,
input[type="radio"].visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  border: 0;
  padding: 0;
  white-space: nowrap;
  -webkit-clip-path: inset(100%);
          clip-path: inset(100%);
  clip: rect(0 0 0 0);
  overflow: hidden;
}

  • Вопрос задан
  • 502 просмотра
Решения вопроса 1
SmthTo
@SmthTo Куратор тега CSS
Все перепёлки мира будут оплакивать мою смерть.
Проблема в CSS. Забавные конструкции типа not() тут не нужны, потому что у вас тупо исключается применение нужных стилей, если элемент либо активный, либо в фокусе. Не знаю, зачем это вообще, нужно так:
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  border: 0;
  padding: 0;
  opacity: 0;
  white-space: nowrap;
  -webkit-clip-path: inset(100%);
          clip-path: inset(100%);
  clip: rect(0 0 0 0);
  overflow: hidden;
}


Вот пример, который можно открыть в IE11 в режиме чтения по ссылке для проверки:

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы