2012-10-08 68 views
4

有没有一种可能的方式来定位css3中输入的标签?比如这个方法我试过 -CSS中的目标标签

input[type="text"]:focus label:target { 
    color:orange !important; 
} 

似乎不工作,只是想知道,或者这是一个只工作jQuery的?

谢谢!

回答

4

​​不会做你认为它所做的事情,并且label永远不可能作为input的后代存在,所以不起作用。

如果您试图通过亲子关系或for属性引用与input关联的label,那么CSS3无法实现这一点。你只能参考label如果是下面的input兄弟姐妹,与两者之一:

input[type="text"]:focus + label 
input[type="text"]:focus ~ label 

如果label是一个祖先,前面的兄弟姐妹或完全在其他地方,你需要使用jQuery遍历DOM并找到它。

+0

好的感谢您的快速反应! – Matt

+0

你能举个例子说明你是兄弟姐妹吗? – Matt

+0

@Matt:类似于'后面的标签'在输入标签后面有一个标签标签,另一个。 – BoltClock

0

随着CSS4你可以这样做:

!label /for/ input[type="text"]:focus, 
!label input[type="text"]:focus { 
    ... 
} 

第一个允许<label for="inputid">,第二个为<label><input type="text"/></label>

然而CSS4的支持是极其有限的。不过,把它放在那里并没有什么坏处。

+0

's/CSS4/Selectors 4 /'另外,参考组合符从'[idref]'到'[id]',但不是相反,所以您应该写' !label/for/input [type =“text”]:focus'。 – BoltClock

+0

但我敢肯定,只有一个浏览器支持CSS4 ..如果:P一半浏览器甚至不支持CSS3的全部。 – Matt

+1

看,这是说“CSS4”的问题。没有CSS4这样的东西,任何浏览器都不可能*支持全部* CSS3,因为它一直在增长,它不仅代表“所有3级模块”,而且代表任何部分从CSS2扩展的CSS。但是,你知道,一切都需要付出代价,这是从全球调平系统(CSS1,2)突然变为模块化系统(> CSS2)的成本。 – BoltClock