¿Cómo selecciono el <li>
elemento que es un padre directo del elemento de anclaje?
Como ejemplo, mi CSS sería algo como esto:
li < a.active {
property: value;
}
Obviamente, hay formas de hacerlo con JavaScript, pero espero que exista algún tipo de solución nativa para CSS Nivel 2.
El menú que estoy tratando de diseñar está siendo expulsado por un CMS, por lo que no puedo mover el elemento activo al <li>
elemento ... (a menos que tema el módulo de creación de menú que prefiero no hacer).
¿Algunas ideas?
fuente
!
ahora:The subject of the selector can be explicitly identified by appending an exclamation mark (!) to one of the compound selectors in a selector.
$
veía mejor para mí ... el apéndice!
se puede pasar por alto más fácilmente.:has()
pseudo que todos han llegado a conocer y amar de jQuery. El último ED ha eliminado todas las referencias al indicador de sujeto y lo reemplazó con el:has()
pseudo. No sé las razones exactas, pero el CSSWG realizó una encuesta hace algún tiempo y los resultados deben haber influido en esta decisión. Lo más probable es que sea compatible con jQuery (por lo que puede aprovechar qSA sin modificaciones) y porque la sintaxis del indicador de sujeto resultó demasiado confusa.No creo que pueda seleccionar el padre solo en CSS.
Pero como ya parece tener una
.active
clase, sería más fácil mover esa clase alli
(en lugar dela
). De esta manera se puede acceder tanto alli
y laa
vía única CSS.fuente
Puedes usar este script :
Esto seleccionará cualquier padre de una entrada de texto. Pero espera, todavía hay mucho más. Si lo desea, puede seleccionar un padre específico:
O selecciónelo cuando esté activo:
Mira este HTML:
Puede seleccionar eso
span.help
cuando elinput
está activo y mostrarlo:Hay muchas más capacidades; solo echa un vistazo a la documentación del complemento.
Por cierto, funciona en Internet Explorer.
fuente
patent()
sería más rápido. Sin embargo, esto necesita pruebas#a!
solo arroja un error,#a! p
funciona), por lo que los demás tampoco funcionarán debido aUncaught TypeError: Cannot call method 'split' of undefined
: ver jsfiddle.net/HerrSerker/VkVPsComo lo mencionaron algunos otros, no hay una manera de diseñar el / los padre / s de un elemento usando solo CSS, pero lo siguiente funciona con jQuery :
fuente
<
selector no existe (verificado con jQuery 1.7.1).<
sintaxis funcionó en 2009, pero la actualicé (para 2013).:has()
selector de :$("li:has(a.active)").css("property", "value");
. Se lee de manera similar al!
selector propuesto por CSS 4 . Ver también::parent
selector ,.parents()
método ,.parent()
método ..css("property", "value")
para dar estilo a los elementos seleccionados, por lo general, debe.addClass("someClass")
tener en su CSS.someClass { property: value }
( vía ). De esa manera, puede anotar el estilo con toda la potencia de CSS y cualquier preprocesador que esté utilizando.Si:
:has()
Soporte de navegador: ninguno
fuente
No hay selector de padres; tal como no hay un selector de hermanos anterior. Una buena razón para no tener estos selectores es porque el navegador tiene que recorrer todos los elementos secundarios de un elemento para determinar si una clase debe aplicarse o no. Por ejemplo, si escribiste:
Luego, el navegador tendrá que esperar hasta que se haya cargado y analizado todo hasta
</body>
determinar si la página debe estar roja o no.El artículo Por qué no tenemos un selector principal lo explica en detalle.
fuente
No hay una manera de hacer esto en CSS 2. Puede agregar la clase al
li
y hacer referencia aa
:fuente
Intente cambiar
a
a lablock
pantalla y luego use el estilo que desee. Ela
elemento llenará elli
elemento y podrá modificar su aspecto como desee. No olvide establecer elli
relleno en 0.fuente
El selector CSS " General Sibling Combinator " podría usarse para lo que desea:
Esto coincide con cualquier
F
elemento precedido por unE
elemento.fuente
No en CSS 2, que yo sepa. CSS 3 tiene selectores más robustos pero no se implementa consistentemente en todos los navegadores. Incluso con los selectores mejorados, no creo que logre exactamente lo que ha especificado en su ejemplo.
fuente
Sé que el OP estaba buscando una solución CSS, pero es fácil de lograr con jQuery. En mi caso, necesitaba encontrar la
<ul>
etiqueta padre para una<span>
etiqueta contenida en el niño<li>
. jQuery tiene el:has
selector para que sea posible identificar a un padre por los hijos que contiene:seleccionará el
ul
elemento que tiene un elemento hijo con id someId . O para responder la pregunta original, algo como lo siguiente debería hacer el truco (no probado):fuente
$yourSpan.closest("ul")
y obtendrá el UL padre de su elemento span. Sin embargo, su respuesta es completamente offtopic en mi humilde opinión. Podemos responder a todas las preguntas con CSS-CSS con una solución jQuery.El pseudo elemento
:focus-within
permite seleccionar un padre si un descendiente tiene foco.Un elemento puede enfocarse si tiene un
tabindex
atributo.Soporte de navegador para foco dentro
Tabindex
Ejemplo
fuente
.color:focus-within .change
con.color:focus-within
. En mi caso, estoy usando la barra de navegación de arranque que agrega la clase a los niños cuando está activa y quiero agregar una clase a la barra principal .nav. Creo que este es un escenario bastante común en el que soy propietario del marcado, pero el componente css + js es bootstrap (u otro), por lo que no puedo cambiar el comportamiento. Aunque puedo agregar tabindex y usar este css. ¡Gracias!Este es el aspecto más discutido de la especificación Selectores Nivel 4 . Con esto, un selector podrá diseñar un elemento de acuerdo con su elemento secundario utilizando un signo de exclamación después del selector dado (!).
Por ejemplo:
establecerá un color de fondo rojo si el usuario se desplaza sobre cualquier ancla.
Pero tenemos que esperar la implementación de los navegadores :(
fuente
Puede intentar usar el hipervínculo como padre y luego cambiar los elementos internos al pasar el mouse sobre él. Me gusta esto:
De esta manera, puede cambiar el estilo en varias etiquetas internas, en función del rollover del elemento principal.
fuente
a
etiqueta solo a ciertos elementos, si desea cumplir con los estándares XHTML. Por ejemplo, no puede usar undiv
insidea
sin recibir una advertencia de violación del esquema.Actualmente no hay un selector principal y ni siquiera se está discutiendo en ninguna de las conversaciones del W3C. Debe comprender cómo evalúa CSS el navegador para comprender realmente si lo necesitamos o no.
Hay mucha explicación técnica aquí.
Jonathan Snook explica cómo se evalúa CSS .
Chris Coyier sobre las conversaciones del selector de padres .
Harry Roberts nuevamente sobre escribir selectores CSS eficientes .
Pero Nicole Sullivan tiene algunos datos interesantes sobre tendencias positivas .
Estas personas son todas de primera clase en el campo del desarrollo front-end.
fuente
need
se define por los requisitos de los desarrolladores web, ya que otros factores deciden si tenerlo en la especificaciónSolo una idea para el menú horizontal ...
Parte de HTML
Parte de CSS
Demo actualizada y el resto del código
Otro ejemplo de cómo usarlo con entradas de texto: seleccione el conjunto de campos principal
fuente
Aquí hay un truco
pointer-events
conhover
:fuente
Hay un complemento que extiende CSS para incluir algunas características no estándar que realmente pueden ayudar al diseñar sitios web. Se llama EQCSS .
Una de las cosas que agrega EQCSS es un selector principal. Funciona en todos los navegadores, Internet Explorer 8 y superiores. Aquí está el formato:
Así que aquí hemos abierto una consulta de elemento en cada elemento
a.active
, y para los estilos dentro de esa consulta, cosas como$parent
tienen sentido, porque hay un punto de referencia. El navegador puede encontrar el padre, porque es muy similar aparentNode
JavaScript.Aquí hay una demostración
$parent
y otra$parent
demostración que funciona en Internet Explorer 8 , así como una captura de pantalla en caso de que no tenga Internet Explorer 8 para probar .EQCSS también incluye meta-selectores :
$prev
para el elemento antes de un elemento seleccionado y$this
solo para aquellos elementos que coinciden con una consulta de elementos, y más.fuente
Ahora es 2019, y el último borrador del Módulo de anidamiento CSS en realidad tiene algo como esto. Introducción
@nest
a las reglas.(Copiar y pegar desde la URL anterior).
Ejemplo de selectores válidos bajo esta especificación:
fuente
Técnicamente no hay una forma directa de hacer esto. Sin embargo, puede solucionarlo con jQuery o JavaScript.
Sin embargo, también puedes hacer algo como esto.
jQuery
Si desea lograr esto usando jQuery aquí está la referencia para el selector padre jQuery .
fuente
El W3C excluyó dicho selector debido al enorme impacto en el rendimiento que tendría en un navegador.
fuente
La respuesta corta es NO ; no tenemos un
parent selector
CSS en esta etapa, pero si no tiene que intercambiar los elementos o clases de todos modos, la segunda opción es usar JavaScript. Algo como esto:O una forma más corta si usa jQuery en su aplicación:
fuente
Aunque actualmente no hay un selector principal en CSS estándar, estoy trabajando en un proyecto (personal) llamado ax (es decir, Sintaxis de selector de CSS aumentado / ACSSSS ) que, entre sus 7 nuevos selectores, incluye ambos:
<
(que permite la selección opuesta a>
)^
(que permite la selección opuesta a[SPACE]
)axe se encuentra actualmente en una etapa de desarrollo BETA relativamente temprana.
Vea una demostración aquí:
http://rounin.co.uk/projects/axe/axe2.html
(compare las dos listas a la izquierda con estilo con selectores estándar y las dos listas a la derecha con estilo con selectores de hacha)
fuente
<script src="https://rouninmedia.github.io/axe/axe.js"></script>
al final de su documento html, justo antes</body>
.Al menos hasta CSS 3 incluido, no puede seleccionar así. Pero hoy en día se puede hacer con bastante facilidad en JavaScript, solo necesita agregar un poco de JavaScript vainilla, tenga en cuenta que el código es bastante corto.
fuente
CSS 4 será elegante si agrega algunos ganchos para caminar hacia atrás . Hasta entonces, es posible (aunque no recomendable) usar
checkbox
y / oradio
input
s para romper la forma habitual en que las cosas están conectadas, y a través de eso también permite que CSS funcione fuera de su alcance normal ...... bastante asqueroso , pero con solo CSS y HTML es posible tocar y volver a tocar cualquier cosa menos el
body
y:root
desde casi cualquier lugar al vincular las propiedadesid
yfor
deradio
/checkbox
input
s y loslabel
desencadenantes ; es probable que alguien muestre cómo volver a tocarlos en algún momento.No estoy seguro acerca de los otros
:
selectores, pero sí:checked
para pre-CSS 3. Si no recuerdo mal, fue algo así como[checked]
por qué puede encontrarlo en el código anterior, por ejemplo,... pero para cosas como
::after
y:hover
, no estoy del todo seguro en qué versión de CSS aparecieron por primera vez.Dicho todo esto, por favor, nunca uses esto en producción, ni siquiera con ira. Como una broma, claro, o en otras palabras, solo porque se puede hacer algo no siempre significa que deba hacerse .
fuente
No, no puede seleccionar el padre solo en CSS.
Pero como ya parece tener una
.active
clase, sería más fácil mover esa clase alli
(en lugar dela
). De esta manera se puede acceder tanto alli
y laa
vía única CSS.fuente
Actualmente, el cambio del elemento primario basado en el elemento secundario solo puede ocurrir cuando tenemos un
<input>
elemento dentro del elemento primario. Cuando una entrada se enfoca, su elemento padre correspondiente puede verse afectado mediante CSS.El siguiente ejemplo lo ayudará a comprender el uso
:focus-within
en CSS.fuente
Es posible con ampersand en Sass :
Salida CSS:
fuente
h3
el padre, que era el objetivo. Esto seleccionaríah3
s que son descendientes de.some-parent-selector
.Contrataría un código JavaScript para hacer eso. Por ejemplo, en Reaccionar cuando itera sobre una matriz, agregue otra clase al componente padre, lo que indica que contiene sus hijos:
Y luego simplemente:
fuente
No hay un selector principal css (y, por lo tanto, en preprocesadores css) debido a "Las razones principales por las que el Grupo de trabajo CSS rechazó previamente las propuestas de selectores principales están relacionadas con el rendimiento del navegador y los problemas de representación incremental".
fuente