Извините за общее название, в любом случае, у меня есть простой HTML-код, например:
<div class="block flex-1 mx-4 relative w-1/2">
<div class="form-group label-floating">
<label class="control-label">Password</label>
<input class="form-control" placeholder="" type="password">
<span class="material-input"></span>
</div>
</div>
Теперь, когда человек нажимает на ввод, я уменьшаю размер этикетки следующим образом:
Со следующим css:
&.label-floating {
&:focus-within {
& > .control-label {
top: 10px;
font-size: 11px;
line-height: 1.07143;
}
}
}
Теперь моя проблема в том, что если ввод не пустой и пользователь покидает ввод, метка вернется к нормальному размеру. Итак, я пробовал такие вещи:
со следующим css:
&.label-floating {
&:focus-within {
& > .control-label {
top: 10px;
font-size: 11px;
line-height: 1.07143;
}
}
& input:not(:empty){
& .control-label {
top: 10px;
font-size: 11px;
line-height: 1.07143;
}
& < .control-label {
top: 10px;
font-size: 11px;
line-height: 1.07143;
}
}
}
Безрезультатно, поэтому мой вопрос, есть ли способ достичь того, чего я хочу, с помощью чистого CSS?
edit: кто-нибудь может отредактировать OP для встраивания изображений, пожалуйста.
Обновлено с чистым CSS:
.form-group {
margin-bottom: 1.5rem;
position: relative;
}
.form-group > .control-label {
color: #888da8;
}
.form-group.label-floating:focus-within > .control-label {
top: 10px;
font-size: 11px;
line-height: 1.07143;
}
.form-group.label-floating input:not(:empty) .control-label {
top: 10px;
font-size: 11px;
line-height: 1.07143;
}