【发布时间】:2012-09-29 02:04:29
【问题描述】:
有没有一种可能的方法来定位 css3 中输入的标签?例如我尝试过这种方法 -
input[type="text"]:focus label:target {
color:orange !important;
}
似乎不起作用,只是想知道还是这只是 jquery 的工作?
谢谢!
【问题讨论】:
标签: jquery css css-selectors target
有没有一种可能的方法来定位 css3 中输入的标签?例如我尝试过这种方法 -
input[type="text"]:focus label:target {
color:orange !important;
}
似乎不起作用,只是想知道还是这只是 jquery 的工作?
谢谢!
【问题讨论】:
标签: jquery css css-selectors target
:target pseudo-class 不会像您认为的那样做,而且label 永远不能作为input 的后代存在,所以这行不通。
如果您尝试通过父系或for 属性来引用与input 相关联的label,则CSS3 无法实现。如果 label 是 input 之后的兄弟,则只能使用以下任一方式引用 label:
input[type="text"]:focus + label
input[type="text"]:focus ~ label
如果label 是祖先、前兄弟或完全在别处,则需要使用 jQuery 遍历 DOM 并定位它。
【讨论】:
<input type="text" id="i"><label for="i">Label directly following its input</label>,在输入标签之后有一个标签标签,没有一个包含另一个。
:target 选择器放在那里了;根本不应该使用它。
使用 CSS4,您可以做到这一点:
!label /for/ input[type="text"]:focus,
!label input[type="text"]:focus {
...
}
第一个允许<label for="inputid">,第二个允许<label><input type="text"/></label>
但是 CSS4 支持非常有限。不过,把它放在那里也没什么坏处。
【讨论】:
s/CSS4/Selectors 4/ 此外,引用组合子从[idref] 变为[id],但不是相反,因此您将改为写!label /for/ input[type="text"]:focus。