Estoy tratando de seleccionar el primero h1dentro de divcon una clase llamada detail_container. Funciona si h1es el primer elemento dentro de esto div, pero si viene después de esto ul, no funcionará.
<style type="text/css">
.detail_container h1:first-child
{
color:blue;
}
</style>
</head>
<body>
<div class="detail_container">
<ul>
<li></li>
<li></li>
</ul>
<h1>First H1</h1>
<h1>Second H1</h1>
</div>
</body>
</html>
Tenía la impresión de que el CSS que tengo seleccionará el primero h1sin importar dónde esté en esto div. ¿Cómo puedo hacer que funcione?
css
css-selectors
El hombre muffin
fuente
fuente

Respuestas:
El
h1:first-childselector significaEl
:first-childdel contenedor aquí es elul, y como tal no puede satisfacerh1:first-child.Hay CSS3
:first-of-typepara su caso:Pero con los problemas de compatibilidad del navegador y todo eso, es mejor que le dé
h1una clase al primero y luego apunte a esa clase:fuente
:first-of-typeselector.:first-of-type. El enlace anterior es incorrecto.:first-childno es claro de entender, porque define el elemento como selector de CSS, por ejemploh1, y luego piensa "tomar el primer hijo" de todos en el nivel DOM elegido. Lo usé mal tantas veces ... Tenemos que acostumbrarnos al:first-of-typeselector y pensar en el primer hijo de su tipo.:first-childselecciona el primeroh1si y solo si es el primer hijo de su elemento padre. En su ejemplo,ules el primer hijo dediv.El nombre de la pseudoclase es algo engañoso, pero se explica con bastante claridad aquí en la especificación.
El
:firstselector de jQuery te da lo que estás buscando. Puedes hacerlo:$('.detail_container h1:first').css("color", "blue");fuente
Para ese caso particular puedes usar:
Pero si necesita ese mismo selector en muchos casos, debería tener una clase para esos, como dijo BoltClock.
fuente
también puedes usar
Al cambiar el número 1 por cualquier otro número, puede seleccionar cualquier otro elemento h1.
fuente
Puede envolver sus
h1etiquetas en otrodivy luego el primero sería elfirst-child. Esodivni siquiera necesita estilos. Es solo una forma de segregar a esos niños.fuente
El elemento no puede heredar directamente de la
<body>etiqueta. Puedes intentar ponerlo en una<dir style="padding-left:0px;"></dir>etiqueta.fuente