Пример с конца https://developer.mozilla.org/en-US/docs/Learn/Forms/How_to_build_custom_form_controls:
.select label {
display: none;
}
.select:focus-within label {
display: initial;
}
input:checked + label {
display: initial;
}
<fieldset class="select">
<legend>Pick a fruit</legend>
<input type="radio" name="fruit" value="Cherry" id="fruitCherry" checked>
<label for="fruitCherry">Cherry</label>
<input type="radio" name="fruit" value="Lemon" id="fruitLemon">
<label for="fruitLemon">Lemon</label>
<input type="radio" name="fruit" value="Banana" id="fruitBanana">
<label for="fruitBanana">Banana</label>
</fieldset>
(я упростил пример, чтобы лучше проиллюстрировать эту мысль). Обратите внимание, как вы можете нажать на одну из меток, и поскольку после этого фокус находится внутри выделения, все метки становятся видимыми. Однако, как только вы попытаетесь нажать на метку другого элемента, метки исчезнут, прежде чем выбрать этот элемент, поскольку до отпускания кнопки мыши остается короткий период, когда ни один элемент не сфокусирован. Я предполагаю, что браузер обрабатывает событие нажатия только после отпускания кнопки мыши.
Есть ли способ сохранить фокус, удерживая нажатой кнопку мыши, даже без JavaScript? Я испытал это на Firefox и Chrome на Linux.
Я также удивлен тем, что он действует по-разному в зависимости от того, нажимаете ли вы и удерживаете ярлык или переключатель.