CSS根据有效输入更改样式

时间:2019-05-14 07:08:43

标签: html css

我是CSS的新手,我将不胜感激。

我正在尝试基于*属性在所需元素的span元素内设置星号input:valid的样式。

<input value="someValue" id="firstnameId" required />
<label class="lbStyle" for="FirstName">
    First Name
    <span class="ddff" style="color:red;">*</span>
</label>

我试图做:

input:valid .ddff {
    color: palegreen;
}

但是它不起作用。

如果输入有效,我想将*的颜色从红色更改为绿色,否则将其保持红色。

如何使用CSS实现它?

谢谢!

5 个答案:

答案 0 :(得分:1)

您的CSS是内联的,请尝试使用!important

input:valid + label .ddff {
      color: palegreen !important;
 }
<input value="someValue" id="firstnameId" required />
   <label class="lbStyle" for="FirstName"> First Name
    <span class="ddff" style="color:red;">*</span>
</label>

答案 1 :(得分:1)

您可以将:valid:invalid选择器用于表单元素,但有必要的限制。

尝试一下:

input[required]:invalid + label:after{content:"*";color:red}
input[required]:valid + label:after{content:"*";color:green}
<input placeholder="Placeholder" required />
<label> First Name</label>

答案 2 :(得分:0)

它可以工作,因为.ddff不是输入孩子

<input value="someValue" id="firstnameId" required />
   <label class="lbStyle" for="FirstName"> First Name
    <span class="ddff">*</span>
</label>

.ddff{
      color: red;
}
input:valid + label .ddff {
      color: green;
 }

input:invalid +label .ddff {
      color: red;
 }

答案 3 :(得分:0)

您的CSS选择器不正确,您必须使用Adjacent sibling combinator

input + label .ddff {
    color: red;
}

input:valid + label .ddff {
    color: palegreen;
}
<input value="someValue" id="firstnameId" required />
<label class="lbStyle" for="FirstName">
    First Name
    <span class="ddff">*</span>
</label>

答案 4 :(得分:0)

可以请您尝试:

CSS:

input:valid + label span.ddff {
      color: palegreen !important;
 }

注意:您可以使用嵌入式CSS。请覆盖您的CSS。