Me pregunto por qué es eso y si hay alguna solución a eso en CSS? Parece una falla de CSS para mí: el primer elemento también puede ser el último elemento.
No es un error. Así es como funciona la cascada: si un elemento es tanto el primer hijo como el último hijo, entonces si tiene :first-child
y en reglas separadas y ambas coinciden con el mismo elemento, entonces cualquier cosa en la regla posterior declarada o más específica anula al otro.
se puede encontrar un ejemplo de este comportamiento here, con la propiedad rápida border-radius
y soluciones que incluyen el uso de las propiedades de los componentes en lugar de la taquigrafía, así como especificar una regla separada por completo usando uno de los siguientes selectores ...
Estoy buscando algo así como: "el primer hijo también es el último hijo" selector. ¿Existe?
Literalmente, lo haría con la cadena tanto pseudo-clases como éste, que funciona bien:
:first-child:last-child
Sin embargo existe una pseudo-clase especial que actúa de la misma manera:
:only-child
La diferencia principal (de hecho, la diferencia solamente) entre estos dos selectores es la especificidad: la primera es más específica ya que contiene una pseudoclase adicional. No hay diferencia incluso en el soporte de navegador, ya que :last-child
y :only-child
son compatibles con las mismas versiones exactas de cada navegador.
Gran! ¡Gracias por tu respuesta rápida! Es incluso mejor que exista ': only-child', agrega más flexibilidad. – Atadj
Asegúrese de que admite IE9 +, ya que creo que es la primera versión de IE que admite: only-child. – AlexM
@AlexM: Correcto. También es la primera versión compatible con ': last-child'. Lamentablemente, no hay una forma de apuntar al único hijo que usa CSS puro en versiones anteriores; tendrías que manipular el HTML o usar un script. – BoltClock