我试过了:
HTML:
<p><label for="address1">Address 1:</label> <input type="text" class="required" id="address1" name="address1" value="" /></p>
的CSS:
input.required + label { color: #c00; }
然而这似乎没有用......我做错了吗?
Firefox 8测试
答案 0 :(得分:6)
尝试使用attribute selector,如下所示:
label[for='address1'] { color: #c00; }
这适用于以下浏览器
这是一个小提琴。 http://jsfiddle.net/TeU7U/
答案 1 :(得分:4)
+
选择器是兄弟选择器。 input + label
将样式应用于<label>
元素,该元素是<input>
后面的下一个元素,如http://jsfiddle.net/Wg7Rr/所示。
不幸的是,没有CSS可以选择以前的兄弟。
您可以将类附加到标签上,而不是将required
应用于input元素,而不是将其附加到父元素,然后使用:
label.required + input { color: #c00; } /*<label class=required /><input>*/
.required > label { color: #c00} /*<p class=required><label /><input>*/
答案 2 :(得分:2)
input.required + label
实际上会匹配紧跟输入所需类别的任何标签。这就是为什么它不适用于你的情况。
您可以使用label[for='address1']
之类的内容,但如果要为与所需输入关联的每个标签设置样式,则只需将所需的类添加到包装p
即可。然后,您可以使用p.required label
作为选择器。
答案 3 :(得分:0)
这应该有效。不确定它与旧版浏览器和性能问题的兼容性如何。
HTML:
<label>Address 1: <input type="text" class="required" id="address1" name="address1" value="" /></label>
CSS:
label > .required{
background:#900;
}
和一个小提琴