Пара дополнительных требований, по которым я работаю:
Нужно быть реактивным / мобильным
Требуется также совместимость с Chrome, Firefox и, в идеале, Opera.
<button class="outline">
Lol A button
</button>
button{
background-color: blue;
color: white;
padding: 15px;
}
.outline:focus{
outline: 2px solid white;
outline-offset: -6px;
}
JS Fiddle пример того, что я делаю сейчас
Edit:
JS Fiddle Пример проблемы, с которой я сталкиваюсь в прошлом, отвечал на подобные вопросы
Если вы посмотрите на вторую ссылку и перейдете к примерам, возможно, попытаетесь изменить некоторые внутренние границы в классе box, вы увидите, что эта опция довольно жесткая, и мне не удалось получить правильную смещение внутренней границы с достаточным зазором от внешнего края.
В частности, 2px, вероятно, будет минимальным зазором между внутренней границей и внешним краем. Предполагаемое использование - это 4-6 пикселей, так что есть действительно четкая граница, поэтому я могу создать контрастность 7,5: 1 для высокой видимости поля фокусировки. В моем конкретном случае использования это невозможно с внешней границей без нарушения цветовой схемы сайта, поэтому это действительно нежелательно.
Я сомневаюсь в том, чтобы заставить это работать как универсальное решение для 3+ типов кнопок, а также хорошо выглядеть на мобильном телефоне.
Кроме того, если правильный ответ здесь просто: «это невозможно, вам нужно сделать что-то еще полностью», это хорошо, если это действительно так. У меня нет опыта CSS, чтобы знать наверняка.