#html #css
Создал группу иконка+input. Проблема в том, что hover и active - работает, а вот
focus нет.
Подскажите, как решить проблему?
* {
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
width: 100%;
height: 100%;
}
.container {
display: flex;
align-items: center;
justify-content: center;
height: 100%;
}
.label {
display: inline-flex;
background: whitesmoke;
border: 1px solid lightgray;
outline: none;
}
.icon {
display: inline-block;
padding: 10px;
}
.input {
padding: 10px;
outline: none;
border: none;
}
/* active */
.label:hover {
border-color: green;
}
.label:active,
.label:focus {
border-color: red;
}
Ответы
Ответ 1
Все просто .label:focus-within * { box-sizing: border-box; } html, body { margin: 0; padding: 0; width: 100%; height: 100%; } .container { display: flex; align-items: center; justify-content: center; height: 100%; } .label { display: inline-flex; background: whitesmoke; border: 1px solid lightgray; outline: none; } .icon { display: inline-block; padding: 10px; } .input { padding: 10px; outline: none; border: none; } /* active */ .label:hover { border-color: green; } .label:active, .label:focus, .label:focus-within { border-color: red; }Ответ 2
Остановился на единственном кросс-браузерном варианте - использование js/jQuery, при активации/потере фокуса - вешаем/убираем класс focus элементу: $('.label').focusin(function() { $(this).addClass('focus'); }).focusout(function() { $(this).removeClass('focus'); }); * { box-sizing: border-box; } html, body { margin: 0; padding: 0; width: 100%; height: 100%; } .container { display: flex; align-items: center; justify-content: center; height: 100%; } .label { display: inline-flex; background: whitesmoke; border: 1px solid lightgray; outline: none; } .icon { display: inline-block; padding: 10px; } .input { padding: 10px; outline: none; border: none; } /* active */ .label:hover { border-color: green; } .label.focus { border-color: red; }
Комментариев нет:
Отправить комментарий