Seamos claros aquí, en caso de que alguien encuentre esto en un motor de búsqueda: no hay selectores de padres en CSS, ni siquiera en CSS3. Sin embargo, es un tema interesante sobre el que hablar y ha surgido una nueva conversación.
En 2008, Shaun Inman sugirió la sintaxis:
a < img { border: none; }
[Corrected the following sentence]: En este ejemplo, seleccionaría a
etiquetas, pero solo si contenían una img
etiqueta. (Aparte: esto sería una desviación extraña de la sintaxis típica donde los elementos reales que se seleccionan están a la derecha, esto estaría a la izquierda).
Definitivamente lea los comentarios en esa publicación, es un hilo súper interesante y contiene algunas razones bastante significativas por las que los selectores de padres aún no existen. David Hyatt, un desarrollador en la vanguardia de la implementación de este tipo de cosas en WebKit, comenta que:
Con los selectores principales, es extremadamente fácil provocar accidentalmente un derrumbe en todo el documento. La gente puede y hará mal uso de este selector. Apoyarlo es dar a la gente mucha cuerda para ahorcarse.
Jonathan Snook resurgió este tema y nos brinda una gran cantidad de antecedentes sobre cómo funciona el renderizado CSS. Todos hemos escuchado antes que el selector universal es el selector de CSS menos eficiente. Jonathan dice que si hubiera un selector de padres, ese sería fácilmente el nuevo líder en selectores ineficientes. El argumento es que cuando los elementos se agregan y eliminan dinámicamente de la página, puede resultar en la necesidad de volver a renderizar todo el documento (preocupaciones importantes sobre el uso de memoria). Sin embargo, Jonathan sigue siendo optimista:
Lo que he descrito no es técnicamente imposible. De hecho, todo lo contrario. Simplemente significa que tendríamos que lidiar con las implicaciones de rendimiento de usar dicha función.
Remy Sharp también se une a la diversión y sugiere esta sintaxis:
a img:parent { background: none; }
La diferencia clave es que la sintaxis: parent solo evaluaría un solo elemento, el parentNode
disponible en el DOM para cada elemento. Esto sería similar a forzar el selector: has a evaluar solo a los niños en lugar de a todos los descendientes.
Hasta ahora todos están de acuerdo:
- Hay grandes preocupaciones sobre el rendimiento.
- Esas preocupaciones se pueden considerar como compensaciones que debemos evaluar, no como obstáculos.
- ¡Desear!