Mi objetivo es aplicar CSS en el último li
, pero no hace eso.
#refundReasonMenu #nav li:last-child {
border-bottom: 1px solid #b5b5b5;
}
<div id="refundReasonMenu">
<ul id="nav">
<li><a id="abc" href="#">abcde</a></li>
<li><a id="def" href="#">xyz</a></li>
</ul>
</div>
¿Cómo puedo seleccionar solo al último hijo?
css
css-selectors
Miral
fuente
fuente
:last-child
. Y no es que la curiosidad.:first-child
es una pseudoclase CSS2,:last-child
una pseudoclase CSS3.:last-child
.Otra solución que podría funcionar para usted es invertir la relación. Por lo tanto, establecería el borde para todos los elementos de la lista. Luego, usaría first-child para eliminar el borde del primer elemento. El primer hijo es compatible estáticamente en todos los navegadores (lo que significa que no se puede agregar dinámicamente a través de otro código, pero el primer hijo es un selector de CSS2, mientras que el último hijo se agregó en la especificación CSS3)
Nota: Esto solo funciona de la manera que pretendía si solo tiene 2 elementos en la lista como su ejemplo. Se aplicarán bordes a cualquier tercer elemento en adelante.
fuente
Si cree que puede usar Javascript, entonces, dado que es compatible con jQuery
last-child
, puede usar el método css de jQuery y lo bueno es que será compatible con casi todos los navegadores.Código de ejemplo:
Puede encontrar más información aquí: http://api.jquery.com/css/#css2
fuente
$("#nav li:last-child").addClass('last-child')
para que puedas mantener tu estilo en tus hojas de estilo.div:last-child
ydiv.last-child
. Parece que considera que la:last-child
sintaxis no es válida y no se aplicará ninguna clase con ese pseudo-selector.Si el número de elementos de la lista es fijo, puede usar el selector adyacente, por ejemplo, si solo tiene tres
<li>
elementos, puede seleccionar el último<li>
con:fuente
li + #nav li
selecciona elli
interior#nav
que viene despuésli
. Su selector debería ser simplemente#nav li + li + li
.Si se encuentra buscando con frecuencia selectores CSS3, siempre puede usar la biblioteca selectivizr en su sitio:
http://selectivizr.com/
Es un script JS que agrega soporte para casi todos los selectores CSS3 a navegadores que de otra manera no los admitirían.
Tíralo a tu
<head>
etiqueta con un condicional de IE:fuente
la pseudoclase del último hijo no funciona en IE
Compatibilidad CSS e Internet Explorer
Selectores CSS de IE7: cómo fallan
fuente
Como alternativa al uso de una clase, puede usar una lista detallada, configurando los elementos dt secundarios para que tengan un estilo y los elementos dd secundarios para que tengan otro. Tu ejemplo se convertiría en:
html:
Ninguno de los métodos es mejor que el otro y depende de las preferencias personales.
fuente
Otra forma de hacerlo es usar el selector de último hijo en jQuery y luego usar el método .css (). Sin embargo, esté cansado porque algunas personas todavía están en la edad de piedra usando navegadores con JavaScript desactivado.
fuente
¿Por qué no aplicar el borde en la parte inferior de la UL?
fuente
padding-bottom
en el<ul>
elemento omargin-bottom
en el último<li>
elemento, este no tendrá la ubicación deseada de justo debajo del último<li>
elemento. De lo contrario, esta es una buena solución.Si está flotando los elementos, puede invertir el orden
es decir, en
float: right;
lugar defloat: left;
Y luego use este método para seleccionar el primer hijo de una clase.
En realidad, esto está aplicando la clase a la ÚLTIMA instancia solo porque ahora está en orden inverso.
Aquí hay un ejemplo práctico para ti:
fuente
Es difícil decirlo sin ver el resto de su CSS, pero intente agregar
!important
delante del color del borde, para que sea así:fuente