我试图用color: white
来解决问题的第一部分,这使得它隐藏在眼睛里。
在第一次输入中可以看到,当它聚焦时,color
变为lightblue
,当输入某些值(也可以是空格)时,color
变为blue
。如果没有输入任何值,color
将变回原来的值。
那么color
的第一部分和最后一部分变化也发生在第二个输入(type="date"
)中,即,当焦点更改为lightblue
时,onfocus out更改回原始颜色。
但是我想在第二也有相同的功能,即,如果一些值(date
)被输入label
color
更改为blue
和input
color
仍然是black
。这在CSS中可能吗?就像在第一个input
input:focus~label {
color: lightblue;
}
input:not(input[type="date"]):not(:placeholder-shown)~label {
color: blue;
}
input[type="date"] {
color: white;
}
input[type="date"]:focus {
color: black;
}
<div>
<input type="text" name="firstName" id="firstName" placeholder=" " required>
<label for="firstName">First Name</label>
</div>
<br><br><br>
<div>
<input type="date" name="birth" id="birth" placeholder=" " required>
<label for="birth" class="birthLabel">Birthday</label>
</div>
编辑:因为期望的行为是通过使用:valid
实现的,但只有当input
有required
或一些模式匹配时才有可能。所以不可能总是这样那么当这些(required
)不在input
检查是否有效
input[type="date"]:valid~label {
color: blue;
}
input:focus~label {
color: lightblue;
}
input:not(input[type="date"]):not(:placeholder-shown)~label {
color: blue;
}
input[type="date"] {
color: white;
}
input[type="date"]:focus {
color: black;
}
input[type="date"]:valid~label {
color: blue;
}
input[type="date"]:valid {
color: black;
}
<div>
<input type="text" name="firstName" id="firstName" placeholder=" " required>
<label for="firstName">First Name</label>
</div>
<br><br><br>
<div>
<input type="date" name="birth" id="birth" placeholder=" " required>
<label for="birth" class="birthLabel">Birthday</label>
</div>