У меня есть пользовательский стиль ввода радио, который реализован более или менее следующим образом:
<input type="radio" id="testradio" class="visuallyhidden custom-radio">
<label for="testradio">...</label>
.custom-radio + label:before {
content: ""
// Styling goes here
}
.custom-radio:focus + label:before {
outline: 1px solid black;
]
Это отлично работает, за исключением одной ворчащей детали: стиль фокуса для навигации по клавиатуре. Я могу выбрать группу переключателей и использовать клавиши со стрелками, чтобы изменить выбранную, но контур фокуса по умолчанию не отображается, потому что тэг ввода скрыт.
Я попробовал добавить свой собственный стиль фокуса, как указано выше, но это ведет себя по-другому, чем стиль браузера по умолчанию. По умолчанию Chrome (и другие браузеры, которые я предполагаю), нарисует контур только тогда, когда вы выбираете клавиатуру для радиовходов, а не когда вы нажимаете на них. Тем не менее, стиль CSS: focus кажется применимым при нажатии на радиовход (также в этом случае, щелкая по метке), что выглядит очень плохо.
В основном, мой вопрос заключается в следующем: как применить стиль: focus к радиовходу, который полностью имитирует поведение браузера по умолчанию, т.е. не отображается с фокуса щелчка мыши? Или есть ли другой способ настроить этот радиовход, который поможет мне сохранить поведение по умолчанию?
Edit: Здесь JSFiddle демонстрирует, о чем я говорю. В первой строке вы можете щелкнуть переключатель, а затем перейти с помощью клавиш со стрелками - контур появится только при использовании клавиатуры. Во второй строке нажатие на переключатель сразу вызывает стиль фокуса.