selectores hijos excluir etiquetas elemento clases avanzados anidadas css

hijos - selector padre css



¿Cuál es la diferencia entre las clases CSS.foo.bar(sin espacio) y.foo.bar(con espacio) (5)

Creo que tienes un ligero malentendido sobre lo que significa el primero.

.element .symbol {}

Significa que esas configuraciones CSS se aplican a cualquier elemento HTML con el .symbol la clase que está dentro de un elemento con el elemento de clase.

<div class="element"> <div class="symbol" /> </div>

En este ejemplo, su primera entrada de CSS afectaría a la etiqueta <div> en el medio.

Su segundo ejemplo significa que la primera clase requiere que se vean afectadas dos clases. Aparte de eso, es igual al primero.

<div class="element large"> <div class="symbol" /> </div>

Entonces, si el HTML se ve así, los valores CSS se aplicarán también a la etiqueta <div> interna.

Si desea establecer etiquetas CSS que se apliquen a varias clases por separado, entonces debe dividirlas mediante una coma. Entonces se ve así:

.element, .symbol {}

Editar: a petición, el enlace a la documentation de los selectores de CSS.

Posible duplicado:
Diferencia entre .classA.classB y .classA .classB en CSS?

¿Podría explicarme la diferencia entre estas dos sintaxis de clases CSS?

.element .symbol {}

y

.element.large .symbol {}

No entiendo la diferencia entre los dos. La primera línea indica dos clases diferentes a las cuales se aplican los mismos estilos. Pero sobre el segundo, ¿cuál es el significado de ''.large'' que está escrito adjunto a ''.element''?


Deberías usar .element .symbol esto donde tienes un elemento dentro de otro elemento. Por ejemplo:

<div class="element"> <i class="symbol"></i> </div>

Si en el .element.large .symbol diferenciar algunos div, podrías agregar una clase adicional para apuntar solo a aquellos que difieren, y .element.large .symbol con .element.large .symbol . Así por ejemplo:

<div class="element large"> <i class="symbol"></i> </div>


En su segundo ejemplo, la primera parte del selector es simplemente un elemento con dos clases, como en <span class="element large"> o <span class="large element"> .

En general, cada parte de un selector se aplica a un elemento HTML.

table[border].clname significa una tabla con un atributo border y una clase de clname, mientras que table [border] .clname significa un elemento con class clname, en un elemento con un atributo border, en una tabla.

(Editar: bueno, digo "un elemento HTML", pero por supuesto puedes tener más de una tabla a la que esto se aplica. Entiendes).


Utilizando

.element.large

se refiere a un elemento con ambas clases:

<div class="element large"></div>

en lugar de un descendiente de un elemento:

.element .large

lo que significa que en:

<div class="element"> <div class="large"></div> </div>

solamente

<div class="large"></div>

está ''recibiendo'' los estilos.

Básicamente , estar separados por un espacio implica dos elementos con una relación descendant .


.element .symbol

significa .symbol inside .element

.element.symbol

significa .element que también tiene el symbol clase.

Asi que,

.element.large .symbol

significa .symbol inside .element que también tiene la clase large .