Pseudo clase :has() de CSS para seleccionar elementos padre
Resumen
La pseudo clase HAS en CSS brinda la posibilidad de seleccionar un elemento según sus elementos hijos sin utilizar JavaScript, facilitando un diseño eficiente y dinámico solo con estilos CSS. Esta nueva funcionalidad permite simplificar tareas comunes como aplicar estilos condicionales, resultando en desarrollos más optimizados y flexibles.
¿Qué es y cómo funciona la pseudo clase HAS en CSS?
La pseudo clase HAS en CSS permite seleccionar un elemento padre basado en si contiene determinado elemento hijo. Esta característica es útil para aplicar estilos distintos a elementos según condiciones específicas, como la presencia o ausencia de cierto contenido interno.
Para usarla, escribimos el selector seguido de la pseudo clase :has() y dentro de los paréntesis especificamos el selector del elemento hijo.
Este código indica que cualquier div con un párrafo (<p>) dentro tendrá un borde y un fondo amarillo.
¿Cómo aplicar estilos condicionales con inputs usando la pseudo clase HAS?
También podemos utilizar la pseudo clase HAS junto con elementos específicos como inputs para establecer estilos dinámicamente según el estado del elemento.
Con esta configuración, al seleccionar el checkbox, el texto del label cambia a verde y negrita automáticamente sin intervención de JavaScript.
¿Cómo mostrar contenido según condiciones en elementos hermanos?
Se puede usar HAS para afectar elementos hermanos según si un elemento contiene o no determinados hijos, proporcionando interactividad visual en relación con el contenido existente o su ausencia.
Ejemplo aplicando en tablas:
<tableborder="1"><tr><td>Nombre</td><td>Apellido</td></tr><tr><td>Juan</td><td>Pérez</td></tr></table><p>Esta tabla tiene datos</p><tableborder="1"></table><p>Esta tabla no tiene datos</p>
Al integrar esta pseudo clase en tus proyectos, optimizarás los tiempos de carga y mejorarás la experiencia del usuario con webs más rápidas y adaptables.
¿Has intentado aplicar la pseudo clase HAS en tus proyectos? Comparte tus experiencias o dudas en los comentarios para colaborar en el aprendizaje conjunto.
La pseudoclase :has() nos permite seleccionar un elemento en función de si contiene un descendiente (hijo, nieto, etc.) que cumpla con ciertas características.
Sintaxis:
elemento:has(selector)
Otra forma de entenderlo:
Podemos pensar en :has() como una pregunta que se le hace al elemento seleccionado:
div:has(.ejemplo)
En este caso, :has() le pregunta al <div>: ¿Tienes dentro algún elemento que tenga la clase.ejemplo?
Si la respuesta es sí, se aplican los estilos.
Si la respuesta es no, los estilos no se aplican.
Excelente aporte
Después de tomar este curso de CSS, me quedó claro que no basta con saber lo básico: el lenguaje ha evolucionado muchísimo. Aprendí propiedades nuevas como :has() y técnicas modernas que realmente marcan la diferencia al diseñar.
La pseudo-clase :has() en CSS ofrece una alternativa para reemplazar ciertas funcionalidades que normalmente requieren JavaScript. Por ejemplo, en lugar de utilizar JavaScript para agregar clases a un elemento padre cuando tiene un hijo específico, puedes hacerlo directamente en CSS.
Ejemplo con :has()
<divclass="contenedor"><p>Este div tiene un párrafo.</p></div><divclass="contenedor"> No hay párrafo aquí.
</div>
.contenedor:has(p){background-color:yellow;}
En este caso, solo el primer div obtendrá el fondo amarillo porque contiene un párrafo. Esto simplifica el código y reduce la necesidad de JavaScript para ciertas interacciones.
Muy buena explicación, hasta que lo pude entender. Excelente teacher. 🙌🏼🚀
¡Me encantó esta clase! Extremadamente útil
HAS STARTED! Ahora si! se pueden hacer cosas flasheras solo a las UI sin necesidad del JS ! IUPI
recuerden no usar border en html ya que está obsoleto en HTML5.
También podemos negar has y evitar hacer que desaparezcan otros elementos p