Combinadores CSS: Hermanos Adyacentes y Especificidad
Resumen
¿Qué son los combinadores en CSS?
Los combinadores en CSS son esenciales para definir estilos con especificidad sin depender de los IDs. Nos permiten seleccionar y aplicar estilos a elementos basándonos en sus relaciones con otros elementos. Los cuatro combinadores más utilizados son:
Hermano adyacente (+): Selecciona el primer hermano inmediato que sigue a un elemento específico.
Hermano general (~): Selecciona todos los hermanos posteriores a un elemento específico.
Hijo directo (>): Selecciona el hijo directo de un elemento determinado.
Descendiente (espacio): Selecciona a todos los descendientes de un elemento, independientemente de cuán profundamente anidados estén.
A continuación, profundizaremos en uno de ellos: el combinador de hermano adyacente.
¿Cómo funciona el combinador de hermano adyacente?
El combinador de hermano adyacente (adjacent sibling) nos permite seleccionar un elemento que sigue inmediatamente después de otro en el mismo nivel jerárquico. Veamos un ejemplo que lo ilustrará mejor.
Estructura del documento HTML
Para explicar el uso del combinador, consideremos la siguiente estructura:
<div><h2>Soy un H2</h2><p>Soy un etiqueta de párrafo</p><h2>Soy un H2</h2><h3>Soy un H3</h3><p>Soy un etiqueta de párrafo</p><h2>Soy un H2</h2><p>Soy un etiqueta de párrafo</p></div>
Aplicación de estilos con CSS
El objetivo es aplicar un estilo específico a los párrafos (<p>) que siguen directamente a un <h2>.
h2 + p{color:red;}
Este código CSS cambiará el color del texto a rojo únicamente para los <p> que son hermanos adyacentes de un <h2>. Así es como funciona:
El primer <p> es adyacente a un <h2>, por lo tanto su texto será rojo.
El segundo <p> no es adyacente a un <h2>, ya que le precede un <h3>.
El tercer <p> sí es adyacente a un <h2>, por lo tanto también tendrá texto rojo.
Ejecución en el navegador
Al cargar el documento HTML en el navegador, podrás ver que solo los párrafos correctos reciben el estilo especial. Así es como funciona la especificidad y la herencia de estilos cuando usamos combinadores en CSS.
Este tipo de combinadores es extremadamente útil cuando trabajamos con estructuras HTML complejas, donde la organización de los elementos puede no ser predecible y deseamos evitar el uso excesivo de clases y IDs para manejar el estilo.
¿Por qué usar combinadores en proyectos grandes?
En proyectos de gran envergadura, donde pueden haber múltiples niveles de anidamiento y repetidas estructuras de elementos similares, los combinadores permiten:
Especificidad sin IDs: Un enfoque limpio y fácil de mantener para aplicar estilos específicos.
Flexibilidad: Permite hacer ajustes rápidamente sin necesidad de alterar el HTML subyacente.
Reducción del uso de clases: Disminuye la sobrecarga de crear y manejar clases para cada caso particular.
Con estos beneficios, los combinadores en CSS se convierten en una herramienta poderosa para desarrolladores, ayudando a mantener el código limpio y eficiente. Continúa explorando combinadores como el de hermano general para llevar tus habilidades CSS al siguiente nivel. ¡Sigue aprendiendo y experimentando!
Así es, que estén después de la etiqueta h2. Iba a preguntar porque el p anterior de la etiqueta h2 no agarraba el estilo porque relativamente están cerca.
buana aclaración
**Recomiendo tener su editor dividido, ya que se hace más fácil cuando miras la estructura HTML mientras le das estilos.
**
Gracias, buen consejo
Muy buena recomendación
Woow amigos, esto no tiene nada que ver con la clase, pero ya pude hacer algo así hasta ahora:
Buena esa!
Super eso. Aplicando lo aprendido poco a poco.
No puedo dejar de compartirles esta joyita!
 buen aporte!
que hace el logo de british petroleum ahí >:(?
Adyacente: Adyacente, del latín adiăcens, es un adjetivo utilizado para nombrar a lo que se ubica en las cercanías de algún objeto o cosa. Dícese que lo adyacente es lo que está al lado, lo contiguo o aledaño.
Por si alguien le sirve mis apuntes :)
Que buenos apuntes ¡Gracias! 🙌
¿como haces las notas, o donde?
Resumen
¿Creen que el uso de combinadores atente contra metodologias como la de BEM?
Hola Francisco,
Pienso que sí atentaría contra la metodología BEM, ya que esta consiste en nombrar a las clases con un bloque_elemento--modificador y nos invita a ponerle clase a todos los modificadores, sin importar si es una o varias etiquetas similares.
Los combinadores por lo general se usan cuando un elemento no tiene clase. Y como te dije anteriormente, BEM nos invita a ponerle clases a todos los elementos HTML para ser muy específicos. No ponerle nombre a un modificador como por ejemplo una etiqueta span afectaría la implementación de BEM.
Espero haberme dado a entender, saludos :)
BEM te ayuda a evitar problemas con la especificidad en el futuro. Si eres lo suficientemente bueno usando BEM, no será necesario usar los combinadores.
Es una característica de CSS que nos permite combinar varios selectores para crear un mayor especificidad.
¿Cuáles son los combinadores más comunes que hay en CSS?
Hermano adyacente o cercano - Adjacent sibling.
Hermano general - General sibling.
Hijo - child.
Descendiente - Descendant.
¿Los combinadores nos ayudan a evitar el sobreuso de las clases y id’s?
Sí.
¿Qué símbolo debemos usar para utilizar el hermano cercano o adjacent sibling?
El símbolo de más (+).
¿Cómo funciona el combinador hermano adyacente o adjacent sibling?
Este combinador nos permite agregar estilos a un elemento que tenga seguido de él el elemento que le digamos en el selector.
Sintaxis.
h2 + p{color:red;}
En este ejemplo lo que estamos haciendo es dándole a los elementos <p> que estén seguidos de un elemento <h3> el color rojo en la fuente.
porque el ponen div si el dijo que usar div es una mala practica????
quien me ayuda
De hecho div funciona como <header>, <main>, etc. Puso <div> ya que no estamos especificando lo que ira dentro de la etiqueta . Es decir es solo para un ejemplo. Si tuviéramos que hacer una barra de navegación lo pondríamos dentro de un <nav>, si hacemos el contenido principal los hacemos dentro de un <main> y así. Espero haberte ayudado
perfecto gracias por la aclaracion
MIS APUNTES
RESUMEN:
Especificidad: Capacidad que se le otorga a un selector de CSS para aplicar estilos, mientras mayor nivel de especificidad tenga el selector, será más relevante para el navegador.
Herencia: Característica que cumplen algunas propiedades de CSS, para así heredar estilos de etiquetas padres a etiquetas hijos.
NOTA: No todas las propiedades de CSS se heredan.
¿Cual es la diferencia entre el hijo y descendiente ?
¡Hola!, te lo explicaré con una analogía:
"Tú eres descendiente de tu abuelo, pero tú NO eres hijo de tu abuelo"
Entendiendo eso, un hijo es cualquier elemento que sea un descendiente directo de cualquier otro elemento:
<div id="div1"><div id="div2">Soy un hijo de #div1
<div id="div3">Yo no soy hijo de #div1, pero sí soy hijo de #div2
</div></div></div>
Un descendiente es cualquier elemento que esté dentro de un otro elemento:
<div id="div1"><div id="div2"> ¡Soy un descendiente de #div1!<div id="div3"> ¡Yo también soy descendiente de #div1, y también soy descendiente de #div2!</div></div></div>
sentí como agresión en la respuesta xD
y porque no se puso rojo el 3cer "soy un p", que esta debajo del h3?, si abajo de el tiene un h2???
Por que el adjacent sibling "+" se aplica al que está inmediatamente después.
Por ejemplo
h2 + p {color: red;}
Aplica los siguientes estillos a las etiquetas "p" que esten inmediatamente despues de una etiqueta "h2"
#off-topic esta pregunta viene por fuera del tema pero me di cuenta de algo viendo el VS Code del profesor.
¿Cómo reducen el espaciado por defecto cuando se da "tab" en las líneas de código?
En VSCode puedes ir a configuración y cambiar el editor a json.
Después cierras configuración y lo vuelves a abrir y puedes colocar el siguiente código:
{"editor.tabSize":2,}
Puedes cambiar el 2 por la cantidad de espacios que quieres que al tabular pero te recomiendo dejarlo asi
Te pondría la imagen directamente pero no se como hacerlo xD, así que te dejo el link para que veas donde puedes cambiar el editor de configuraciones
https://imgur.com/uv7dzk6
Los combinadores en CSS, que esto nos va a ayudar a tener una especificidad mucho más certera. Tenemos 4 opciones de combinadores entre las más importantes. Al momento de generar estas combinaciones vamos a tener una especificidad mucho mas alta que nos va a ayudar a evitar tener id por ejemplo o algún otro tipo de id etiqueta etiqueta etiqueta. Con esto podemos ser un poco más específicos sin tener un id, y nos puede ayudar mucho para la parte de la especificidad.
Estos 4 son los hermanos adyacentes o cercanos, los hermanos generales, los hijos y los descendientes.