嗨,我正在try 实现自定义material 轮廓输入,其中包括标签浮动的凹槽.
我知道Angular Metal现有组件,但我需要有自己的特殊定制,因此构建自己的组件.
我在创造浮动方面已经走到了这一步,但在创造实际的缺口方面遇到了困难.我见过一些解决方案,其中标签后面只有白色背景,但这在我的解决方案中行不通,因为输入背景是不同的 colored颜色 .
任何最好的帮助/策略都将是伟大的.我可以使用JS,只要它在多个浏览器中保持一致,这是最重要的.提前感谢.
代码 :
HTML
<div class="material-textfield">
<input placeholder=" " type="text" value="test" />
<label class="label-container">Label</label>
</div>
CSS
.material-textfield {
position: relative;
}
.label-container {
position: absolute;
font-size: 1rem;
left: 0;
top: 50%;
transform: translateY(-50%);
background-color: transparent;
color: gray;
padding: 0 0.3rem;
margin: 0 0.5rem;
transition: 0.1s ease-out;
transform-origin: left top;
pointer-events: none;
}
input {
font-size: 1rem;
outline: none;
border: 1px solid gray;
border-radius: 5px;
padding: 1rem 0.7rem;
color: gray;
transition: 0.1s ease-out;
background-color: beige;
}
input:focus {
border-color: #6200ee;
}
input:focus + .label-container {
color: #6200ee;
top: 0;
transform: translateY(-50%) scale(0.9);
border-color: #6200ee; /* Color on focus */
}
input:not(:placeholder-shown) + .label-container {
top: 0;
transform: translateY(-50%) scale(0.9);
border-color: #6200ee; /* Color when input is not empty */
}