Как сделать градиентную рамку у текстового поля, поддерживающую border-radius?
Требуется, чтобы у текстового поля (input[type="text"] и input[type="password"]) была рамка, у которой на заднем фоне находится градиент, но вместе с тем должен работать border-radius (то есть, border-image не подходит). Задний фон текстового поля можно сделать непрозрачным. Желательно максимально короткое по размеру кода решение, без использования дополнительных элементов (только сам input и, может быть, label). Вот немного кода:
input[type="text"], input[type="password"] {
position: relative;
padding: 5px;
border: 2px solid transparent;
background-clip: padding-box;
border-radius: 5px;
background: linear-gradient(blue, green);
}
input[type="text"]::after, input[type="password"]::after {
content: "";
position: absolute;
top: -4px;
right: -4px;
bottom: -4px;
left: -4px;
background: linear-gradient(red, purple);
z-index: -1;
border-radius: 5px;
}
<input type="text" name="test" id="test" />
Ответы (1 шт):
Автор решения: kost1k
→ Ссылка
У тега инпут нет псевдоэлементов, по этому без использования дополнительного элемента не обойтись.
label {
display: inline-flex;
background: linear-gradient(blue, green);
padding: 2px;
border-radius: 5px;
}
input[type="text"], input[type="password"] {
background-color: #fff;
border-radius: 5px;
border: none;
outline: none;
}
<label>
<input type="text" name="test" id="test" />
</label>