#css #firefox #focus #accessibility #outline
#css #firefox #фокус #Специальные возможности #контур
Вопрос:
Важно: я не хочу настраивать / удалять стили фокуса для целей доступности (a11y). В принципе невозможно имитировать все различные стили фокусировки браузеров / операционных систем
Настройка внешнего вида области ввода / textarea удаляет стиль контура, когда элемент сфокусирован. Также он добавляет странную границу и т.д.
В чем причина такого поведения, на мой взгляд, это разрушает доступность? Как не переопределять стили фокуса при изменении простых свойств CSS, таких как фон, цвет границ и т.д.?
Я тестировал на Firefox Mac и IE 11 (Chrome работает нормально), возможно, другой браузер действует так же. Вот Codepen, чтобы попробовать это в браузере:https://codepen.io/lbineau/pen/dLgwoo
<label for="customized-input">Customized input</label>
<input id="customized-input" type="text" />
<label for="native-input">Native input</label>
<input id="native-input" type="text" />
Ожидаемый результат: контур по умолчанию должен отображаться, даже если граница ввода настроена.
Фактический результат: контур не отображается, когда ввод сфокусирован.
Комментарии:
1. Вопрос, почему бы не выполнить сброс css, чтобы он выглядел одинаково для всех браузеров? Запуск с Normalize.css, например, был бы отличным способом начать работу. Вы могли бы пойти дальше, выполнив перезагрузку. Если вы планируете использовать bootstrap в будущем, я рекомендую bootstrap boot. Более подробную информацию о сбросе и перезагрузке вы можете найти здесь: css-tricks.com/reboot-resets-reasoning
2. Спасибо за ваш ответ. На самом деле я не стремлюсь нормализовать поведение браузера, а наоборот, найти способ не нарушать поведение браузера. Между прочим, я использую normalize.css в течение многих лет. Я специально не добавлял его в образец codepen, чтобы иметь «сырую» версию браузера.
Ответ №1:
Я не знаю причину этого.
Но вы можете переопределить это с помощью следующего кода:
#customized-input:-moz-focusring {
outline: Highlight solid 1px;
}
Комментарии:
1. Спасибо за ваш ответ, но я больше ищу объяснение, а не решение. Выполнение того, что вы предлагаете, предполагает, что все Mozilla Firefox используют этот конкретный контур. Я почти уверен, что если вы проверите Windows / mac os / linux / Android / ios Firefox, у них нет такого контура (некоторые или сплошные / пунктирные / размытые и т.д.).
Ответ №2:
Если элемент css, который вы хотите изменить, является родственным, вы можете использовать его следующим образом,
<label class="label-class" for="customized-input">Customized input</label>
<input id="customized-input" type="text" />
.customized-input:focus ~.label-class {
amp;::before {
border:1px solid red;
height:40px;
width: 40px;
}
}