Edge игнорирует :focus, :valid, :placeholder-shown
Label всегда находиться вверху, хотя без фокуса и без контента должен находиться "внутри" input. Тестирую на браузере Edge.
SCSS:
input {
width: 244px;
height: 40px;
font-size: 16px;
color: #fff;
padding: 0 10px;
background: transparent;
border: 2px solid var(--semilight);
outline: none;
border-radius: 5px;
&:focus ~ span, &:not(:placeholder-shown) ~ span {
top: 1px;
font-size: 14px;
background: var(--dark);
}
}
HTML:
<div className="input__area">
<input />
<span className="input__lable">Название</span>
</div>
Нашел статью на англоязычном stackoverflow, там предлагалось заменить на &:focus ~ span, &:invalid:not(:focus)::-webkit-input-placeholder
, но так label поднимается только при фокусе, не зависимо от контента в input, после пропажи фокуса не зависимо от того написано в input что то или нет label опускается вниз.
Ответы (1 шт):
Автор решения: Alexey Ten
→ Ссылка
Что бы заработал псевдокласс :placeholder-shown
у элемента input
должен быть плейсхолдер (пусть даже и пустой).
input:focus + span, input:not(:placeholder-shown) + span {
color: red;
}
<input placeholder="">
<span>я стану красным при фокусе или непустом поле</span>