Если вы пытаетесь установить градиент для текста заполнителя, ваш лучший вариант - полностью опустить или удалить заполнитель и установить еще один div поверх верхней части ввода с выбранным вами шрифтом и градиентом текста.
<div id="InpCont">
<input type="text" id="UsrInp">
<div id="InpOverlay">
<p id="PsudoPlcHlder" class="OverlayTxt" contenteditable="true" onchange="PsudoPlcHlder.value=UsrInp.value" max-length="44">Search</p>
</div>
</div>
#InpCont{
// Position Where you want this element
}
#UsrInp{
position:absolute;
top:8px; left:50%;
transform:translateX(-50%);
width:64%; height:calc(28px + 1.87vh);
background:linear-gradient(-33deg,#ffffff70, #ffffff);
z-index:20;
}
#PsudoPlcHlder{
position:relative;
top:-40px; left:calc(20px + 25%);
width:240px; height:29px; padding:2px;
background:linear-gradient(23deg,red,green,blue);
overflow-x:hidden;
background-clip:text;
color:transparent;
z-index:25;
}
(document.addEventListener('DOMContentLoaded', function(){
const UsrInp = document.getElementById('UsrInp');
const PsudoPlcHlder = document.getElementById('PsudoPlcHlder');
PsudoPlcHlder.addEventListener('click', (function(){
PsudoPlcHlder.innerText = '';
}))
})
Только что попробовал это на моем собственном приложении, и оно, кажется, работает, но я не уверен насчет части отправки формы, так как я не подключил ее к БД в на данный момент, возможно, придется немного поиграть с позиционированием, так как я проверил это только в самом низу моего приложения, но может быть хорошей отправной точкой для того, чтобы вы с ним связались.
при проверке этого градиент, кажется, растягивается, чтобы соответствовать, однако есть много символов, даже если там, например, 120, что немного странно. поиграю с этим больше и отредактирую позже, если найду какие-нибудь более лучшие методы ..