css - has - Seleccione nth-child en varios padres
selector css (2)
Tengo el siguiente marcado:
<div class="foo">
<ul>
<li>one</li>
<li>two</li>
</ul>
<ul>
<li>three</li>
</ul>
<ul>
<li>four</li>
</ul>
</div>
Deseo diseñar "uno" y "tres".
Sin embargo, el marcado también podría ser:
<div class="foo">
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
<ul>
<li>four</li>
</ul>
</div>
He intentado usar el siguiente CSS:
.foo li:nth-child(1),
.foo li:nth-child(3)
{
color:red;
}
Sin embargo, como se esperaba, esto es diseñar el primer hijo de cada ul
. (Demostración: http://jsfiddle.net/hTfVu/ )
¿Cómo puedo cambiar mi CSS para que pueda apuntar al 1er y al 3er li
pertenecen a .foo
?
No puedes hacer eso solo con los selectores de CSS. :nth-child()
y los combinadores de hermanos están limitados a los niños / hermanos que comparten el mismo padre solamente, como implica su nombre, y los selectores de CSS no pueden dar cuenta de tales variaciones en la estructura padre-hijo, ni hay nada como un :nth-grandchild()
selector :nth-grandchild()
(incluso :nth-match()
de Selectors 4 se limita solo a elementos que comparten el mismo elemento principal).
Por supuesto, con algo como jQuery se vuelve trivial: $(''.foo li:eq(0), .foo li:eq(2)'')
De lo contrario, tendrá que marcar el primer y tercer elemento li
explícitamente utilizando clases o ID , y luego seleccionarlos.
Puede usar los selectores par e impar.
li:nth-child(odd) {
color: red;
}
li:nth-child(even) {
color: white;
}