Contactos

Selectores de niños. Selectores css secundarios y contextuales css seleccionar elementos secundarios

Creo que mucha gente conoce selectores contextuales en CSS... Se utilizan con mayor frecuencia, sin embargo, los diseñadores de diseño experimentados son muy conscientes de que a veces los selectores contextuales presentan ciertos problemas. Este problema está relacionado con el hecho de que en la estructura de un elemento puede haber muchos elementos idénticos anidados entre sí. Y es necesario aplicar el estilo no a todos los elementos anidados, sino solo al elemento directamente hijo. Esto es lo que usan para esto. selectores secundarios en CSS.

Para aclarar el problema, démosle un pequeño ejemplo. Tengamos tal Código HTML:



Primer párrafo



Segundo parrafo


Y nuestra tarea es hacer rojo solo " Segundo parrafo". Si escribimos usando un selector de contexto:

Contenedor p (
color rojo;
}

Entonces ambos párrafos se volverán rojos, lo que no necesitamos en absoluto. Esta tarea es muy fácil de resolver con la ayuda. selectores secundarios en CSS:

Contenedor> p (
color rojo;
}

Todo, ahora solo nos hemos vuelto rojos " Segundo parrafo". Dado que este párrafo en particular es directamente hijo de .envase... A " Primer párrafo"es un hijo de la interna div por lo tanto, no cae bajo la influencia del selector de niños.

Así de fácil se resuelven estas tareas, sin embargo, existe una gran desventaja. selectores secundarios en CSS- no funcionan en navegadores explorador de Internet ... Por esta razón, su uso es altamente indeseable. Pero si de repente te encuentras en algún lugar, ahora sabrás lo que significa tipo dado selectores y lo que hace.

Ha llegado a la tercera parte de este capítulo. Aquí aprenderá cómo usar selectores secundarios en CSS, así como algunas pseudoclases adicionales para un muestreo más preciso.

Selectores de CSS secundarios

En el artículo anterior, hablamos sobre las relaciones entre los elementos de un documento HTML, incluidos los elementos secundarios. Echemos un vistazo a un ejemplo de cómo se pueden utilizar estas relaciones en CSS.

Imagina que solo necesitas diseñar esas etiquetas

Que son hijos de sin afectar al resto

(por ejemplo,

Subsidiarias de

).
¿Cómo hacerlo? Muy simple: creemos un selector de niños:

Cuerpo> p (color: # 333;)

Observe el símbolo> después del cuerpo. Con él, indicas que el estilo se aplica exclusivamente a las etiquetas secundarias.

Padre ... Si se elimina el símbolo, el estilo se aplicará a absolutamente todas las etiquetas.

Que están dentro de la etiqueta , aunque puede que no sean hijos de ella.

Seudoclases adicionales

Hay una serie de pseudoclases en CSS3 para trabajar con niños. A continuación se muestra una descripción de cada uno de ellos, ejemplos de uso, así como las diferencias entre las pseudoclases de la forma "child" y "of-type".

  • : first-child: esta pseudoclase se puede usar para diseñar el elemento especificado de la página web, siempre que sea el primero
  • : last-child: el estilo se aplica al elemento de página web especificado, siempre que sea el último un hijo de su padre;
  • : nth-child - le permite seleccionar niños pares (pares) e impares (impares); también puede usar esta pseudo-clase para diseñar niños alternos usando expresiones como an + by números;
  • : only-child: se aplica al elemento secundario, siempre que sea el único un niño con un padre;
  • : primero de tipo: el estilo se aplica a al primer elemento del tipo especificado(incluso si este elemento no es el primer hijo de su padre y otros hijos de otros tipos están por encima de él);
  • : último de tipo: funciona exactamente igual que la pseudoclase anterior, con la única diferencia de que se aplica el estilo al último elemento del tipo especificado;
  • : nth-of-type: funciona como: nth-child, pero se centra en tipo de elemento;
  • : solo de tipo: se aplica a un hijo del tipo especificado, siempre que el padre lo tenga el único hijo de su tipo.

Ejemplo de uso: first-child ,: last-child y: nth-child

Primer hijo

Segundo hijo

Tercer hijo

Número impar
Número par
Número impar
Número par

Último niño

/ * CSS * / p: primer hijo (peso de fuente: negrita; transformación de texto: mayúsculas;) p: último hijo (estilo de fuente: cursiva; tamaño de fuente: 0.8em;) p: nth-hijo ( 3) (color: rojo;) tr: nth-child (impar) (background-color: # A2DED0;) tr: nth-child (even) (background-color: # C8F7C5;) Captura de pantalla: aplicando: primer hijo, : último hijo y: enésimo hijo

Hemos escrito un estilo CSS para los hijos de un documento HTML simple, donde la etiqueta

es el padre de las etiquetas

,

... Echemos un vistazo al CSS en orden.

La primera regla, p: primer hijo, se refiere al elemento p: si es el primer hijo de su padre, luego se le aplica un estilo (en nuestro caso es negrita y convierte el texto a mayúsculas). Si en el código HTML dado inmediatamente después de la etiqueta de apertura

agregar alguna otra etiqueta (por ejemplo,

), entonces el estilo p: first-child ya no se renderizará porque

Dejará de ser la primera etiqueta secundaria. En este caso, el primer hijo será h2.

Lo mismo sucede con la regla p: last-child: el estilo CSS se aplicará a la etiqueta

Solo cuando aparece el último hijo de su padre... Agregar después

Cualquier otra etiqueta de un tipo diferente y verá que la regla p: last-child ya no se aplicará.

La regla p: nth-child (3) funciona para tercera etiqueta de niño

(Esto se evidencia con el número 3 entre paréntesis). El color de la fuente de este párrafo se vuelve rojo. Puede cambiar el número 3 (por ejemplo, a 2) y ver el resultado.

Las reglas tr: nth-child (impar) y tr: nth-child (par) funcionan para elementos tr impares e pares, respectivamente. Puede ver el resultado en la captura de pantalla, así como copiar todo el código y experimentar con los estilos usted mismo.

Ejemplo de uso: first-of-type ,: last-of-type ,: nth-of-type y: only-of-type

Primer hijo

Segundo hijo

Tercer hijo

Cuarto hijo

Quinto hijo

Último niño

/ * CSS * / p: primer tipo (color: violeta; transformación de texto: mayúsculas;) p: último tipo (estilo de fuente: cursiva; tamaño de fuente: 0.8em;) p: nth- de tipo (3) (color: rojo;) p: n-ésimo de tipo (impar) (color de fondo: # A2DED0;) p: n-ésimo de tipo (par) (color de fondo: # C8F7C5;) h3: único de tipo (decoración de texto: subrayado;)
Captura de pantalla: Aplicación: primero de tipo,: último de tipo, enésimo de tipo y: único de tipo

La primera regla CSS que ve es p: first-of-type. ¿Qué hace? Selecciona un hijo de tipo p, que el primero ocurre en el padre. Y no importa dónde se encuentre esta etiqueta entre los elementos de otros tipos: en el primero, segundo o décimo. Esta es la diferencia entre las pseudoclases: first-child y: first-of-type.

La segunda regla, p: último de tipo, aplica el estilo a el último un hijo del tipo p. Como puede ver en el código HTML, después de la última etiqueta

También hay una etiqueta

, cuya presencia no afecta la ejecución de la regla CSS de ninguna manera (a diferencia de la opción con: last-of-child).

La siguiente regla, p: nth-of-type (3), cambia el color de la fuente a rojo. Aplica este estilo a la etiqueta.

Cual es tercera por un elemento de su propio tipo en el padre. En la captura de pantalla, puede ver que se aplica rojo a la etiqueta.

Que es de hecho el quinto hijo de la etiqueta.

... Pero si no tiene en cuenta elementos de otros tipos, resulta que la etiqueta

Con fuente roja ocupa el tercer lugar (entre las etiquetas de su tipo). Así es como funciona esta regla.

Las reglas p: nth-of-type (par) yp: nth-of-type (impar) funcionan de manera similar: dado que el nombre p se da antes de los dos puntos, los hijos pares e impares de tipo p se seleccionan y colorean en colores preestablecidos... El resto de los elementos se omiten.

La última regla, h3: only-of-type, se aplica al contenido de la etiqueta.

subrayando el texto. Este estilo solo funciona porque la etiqueta

es un el único un niño de su tipo. Si agrega otra etiqueta al código HTML

, el estilo no se aplicará.

conclusiones

Un selector de CSS secundario le permite diseñar el elemento secundario de un documento HTML en función de quién es el padre.

Con la ayuda de pseudoclases adicionales: first-child ,: last-child ,: nth-child ,: only-child, puede diseñar los elementos secundarios de un documento HTML, centrándose en su ubicación, numerando en el árbol de elementos.

Las pseudoclases: first-of-type ,: last-of-type ,: nth-of-type ,: only-of-type le permiten diseñar los elementos secundarios de un documento HTML en función de su tipo y numeración en el árbol de elementos ...

Última actualización: 21.04.2016

Un grupo especial de pseudoclases está formado por pseudoclases que le permiten seleccionar niños específicos:

    : primer hijo: representa el elemento que es el primer hijo

    : last-child: representa el elemento que es el último niño

    : hijo único: representa un elemento que es el único hijo en algún contenedor

    : solo de tipo: selecciona un elemento que es el único elemento de un tipo específico (etiqueta) en algún contenedor

    : nth-child (n): representa un elemento hijo que tiene un número específico n, por ejemplo, el segundo hijo

    : nth-last-child (n): representa el elemento secundario que tiene un número específico n, comenzando desde el final

    : nth-of-type (n): selecciona un hijo de un tipo específico que tiene un número específico

    : nth-last-of-type (n): selecciona un hijo de un tipo específico que tiene un número específico comenzando desde el final

Seudoclase del primer hijo

Usamos la pseudoclase del primer hijo para seleccionar los primeros enlaces en los bloques:

Selectores en CSS3

Tabletas

Teléfonos inteligentes

Principales smartphones 2016

Samsung Galaxy S7
Apple iPhone SE
Huawei P9


R: Se aplica estilo al primer hijo en un enlace si es el primer hijo de cualquier elemento.

Y en el segundo bloque, el primer elemento es un párrafo, por lo que ninguno de los enlaces tiene estilo.

La pseudoclase del último hijo

Usamos la pseudoclase del último hijo:

Selectores en CSS3

Teléfonos inteligentes

Tabletas



El selector a: last-child define el estilo de los enlaces que son los últimos hijos.

En el primer bloque, el enlace es el último elemento hijo. Pero en el segundo, el último hijo es el párrafo, por lo que en el segundo bloque, el estilo no se aplica a ninguno de los enlaces.

Selector de hijo único

El selector: only-child selecciona elementos que son los únicos hijos en los contenedores:

Selectores en CSS3

Bóveda

Texto 1

Texto2

Texto3

Texto4



Los párrafos con los textos "Text1" y "Text4" son los únicos hijos en sus contenedores externos, por lo que están diseñados con color de fuente rojo.

La pseudoclase única de tipo

La pseudoclase de tipo único selecciona un elemento que es el único elemento de un tipo particular en el contenedor. Por ejemplo, un solo elemento div, mientras que puede haber tantos elementos de otros tipos en el mismo contenedor.

Selectores en CSS3

Encabezamiento

Párrafo único y elemento de extensión

Pie de página


Aunque hay un estilo definido para los elementos div, no se aplicará porque hay dos divs en el contenedor del cuerpo, no uno. Pero solo hay un elemento p en el cuerpo, por lo que se le dará estilo. Y también hay solo un elemento span en el contenedor p, por lo que también se le aplicará estilo.

La pseudoclase nth-child

La pseudoclase nth-child le permite diseñar cada segundo, tercer elemento, solo elementos pares o impares, etc.

Por ejemplo, diseñemos las filas pares e impares de la tabla:

Selectores en CSS3

Teléfonos inteligentes

SamsungGalaxy S7 borde60000
manzanaiPhone SE39000
MicrosoftLumia 65013500
AlcatelÍdolo S430000
HuaweiP960000
HtcHTC 1050000
MeizuPro 640000
XiaomiMi535000


Para definir el estilo de los elementos impares, el valor "impar" se pasa al selector:

Tr: n-ésimo hijo (impar) ()

Para diseñar elementos pares, el valor "par" se pasa al selector:

Tr: nth-child (par) ()

También podemos pasar el número del elemento a diseñar a este selector:

Tr: nth-child (3) (color de fondo: #bbb;)

En este caso, se está aplicando estilo a la tercera línea.

Otra posibilidad es utilizar un marcador de posición para el número, que se expresa con la letra n:

Tr: nth-child (2n + 1) (color de fondo: #bbb;)

Aquí, el estilo se aplica a cada segunda línea impar.

El número antes de n (en este caso 2) representa el siguiente niño que se resaltará. El número que sigue al signo más indica desde qué elemento comenzar la selección, es decir, +1 significa comenzar desde el primer elemento secundario.

Por lo tanto, en este caso, la selección comienza con el primer elemento y el siguiente es 2 * 1 + 1 = tercer elemento, luego 2 * 2 + 1 = quinto elemento, y así sucesivamente.

Por ejemplo, si queremos seleccionar cada tercer elemento, comenzando con el segundo, entonces podríamos escribir:

Tr: nth-child (3n + 2) (color de fondo: #bbb;)

La pseudoclase: nth-last-child esencialmente proporciona la misma funcionalidad, excepto que los elementos no se cuentan desde el principio, sino desde el final:

Tr: nth-last-child (2) (background-color: #bbb; / * 2 línea desde el final, es decir, la penúltima * /) tr: nth-last-child (2n + 1) (background-color : #eee; / * líneas impares comenzando desde el final * /)

Pseudoclase de tipo Nth-of-type

La pseudoclase: nth-of-type le permite seleccionar un hijo de un tipo específico por un número específico:

Tr: n-ésimo de tipo (2) (color de fondo: #bbb;)

La pseudoclase nth-last-of-type funciona de manera similar, solo que ahora los elementos se cuentan desde el final:

Tr: nth-last-of-type (2n) (color de fondo: #bbb;)

  • La tarea que se realiza es la selección de niños.
  • Designación - encadenamiento: selector de padre simple, combinador ">", selector de hijo simple.
  • Ejemplo de uso:

Establezcamos la sangría izquierda para la lista anidada directamente en el elemento con la clase de contenido (estas reglas no afectarán las listas del segundo nivel de anidación):

Contenido> ul (margen izquierdo: 20px;)

Más sobre el selector de niños

La principal diferencia entre el selector de niños y el que se discutió anteriormente es el hecho de que si el selector de niños selecciona todos los descendientes, independientemente del nivel de anidamiento, entonces el selector de hijos selecciona solo los descendientes de primer nivel, es decir, elementos directamente anidados. Por ejemplo, escribamos esto:

Div> span (color: # 555; / * gris * /)

... y este código:

Este texto será negro. Y este es gris, porque este lapso es hijo de un div.

Vuelve a aparecer texto en negro. Y ese texto también es negro, ya que este intervalo no es hijo del div. Su padre inmediato es la etiqueta p.

Los selectores de CSS secundarios son selectores que se utilizan para aplicar estilos a elementos solo cuando son secundarios de otros elementos (principales). Al igual que los selectores descendientes, los selectores secundarios son compuestos y están formados por selectores simples (clases, identificadores, etc.).

Nuevamente, si ha olvidado qué son los elementos secundarios, recordemos analizando un ejemplo que ya le es familiar.

<тег1> <тег2>... <тег3><тег4>...

Un elemento se llama hijo de otro elemento si está dentro de él en el primer nivel de anidamiento. En nuestro ejemplo<тег2>y<тег3>son hijas<тег1>, a<тег4>- esta es una hija<тег3> .

Los selectores secundarios constan de dos o más selectores simples separados por ">", donde el padre se indica primero, luego su hijo, luego el hijo de este hijo, y así sucesivamente. Es decir, como en los selectores descendientes, se especifica la ruta del árbol del documento. Los estilos se aplicarán solo a aquellos elementos cuyos selectores sean los últimos en la lista. Sintaxis general:

selector1> selector2 (

Los espacios a ambos lados del letrero ">" se pueden usar o no, si se desea.

Ejemplo usando selectores secundarios de CSS

Selectores de niños

Párrafo 1.

Párrafo 2.



Resultado en el navegador

Párrafo 1.

Párrafo 2.

En este ejemplo, debe prestar atención a dos puntos. Aquí hay tres elementos, pero solo dos de ellos tienen bordes, relleno y márgenes. ¿Por qué? Y el segundo punto. Solo el primer párrafo tiene un color de texto azul.

Internet Explorer 6.0 no comprende los selectores de niños, por lo que si está creando su sitio con este antiguo navegador en mente, téngalo en cuenta.

Selectores secundarios en tablas HTML

Muchos novatos (y a veces ya no novatos) en la creación de sitios enfrentan ciertos problemas cuando usan selectores secundarios en tablas HTML. Para que entiendas lo que en cuestión, echemos un vistazo a una tabla tan común.

Celda 1.1Celda 1.2
Celda 2.1Celda 2.2

Y ahora una pregunta. ¿Qué debe hacer si necesita navegar desde una etiqueta a celdas usando selectores secundarios? Si decides escribir así, entonces está mal:

tabla> tr> td ( El valor de la propiedad; El valor de la propiedad; ...)

¿Puedes adivinar por qué está mal? ¿No? El hecho es que se olvidó de un elemento más, que, incluso si no se especifica explícitamente, sigue estando presente de manera invisible en cada tabla HTML. Simplemente no tiene las etiquetas de apertura y cierre requeridas, por lo que a menudo se pasa por alto. Por cierto, sí, en Tutorial HTML no lo revisamos con usted, porque en realidad su indicación explícita rara vez es necesaria. Bueno, creo que ya adivinaste lo que será entrada correcta, pero te lo mostraré de todos modos.

tabla> tbody> tr> td ( El valor de la propiedad; El valor de la propiedad; ...)

Por cierto, no solo las tablas tienen elementos con etiquetas de apertura opcionales, también existen tales elementos. Es solo que, en la práctica, los "problemas de olvido" surgen con mayor frecuencia con las tablas, por eso llamé su atención sobre esto.

Tarea.

  1. Instale la fuente Arial 0.9em y algunos antecedentes en la página.
  2. Escriba algunos títulos y párrafos en la página, cambie el tamaño y el color del texto de los títulos como mejor le parezca.
  3. Haga que los enlaces directamente en los párrafos de la página sean azules sin subrayar. Pero al mismo tiempo, si los enlaces están enmarcados adicionalmente con cualquier etiqueta, por ejemplo, en cursiva, entonces deben mostrarse subrayados y en rojo. Una vez más, llamo su atención sobre el hecho de que no necesita escribir estilos de enlace con cada etiqueta de encuadre por separado, hágalo universalmente. ¿Cómo? Piénsalo.
  4. Cree un pequeño menú en el lado derecho de la página y arréglelo, para esto necesita una propiedad y un par de otras propiedades relacionadas, lo resolverá allí. Al mismo tiempo, deje que el menú no solo permanezca en su lugar dentro de la ventana del navegador, sino que tampoco se arrastre sobre el contenido de la página cuando se desplaza.

Creo que el último punto de la lección será el más difícil para ti, pero no trates de sumergirte por completo en dominar el posicionamiento de inmediato. Solo haz tu tarea. Por cierto, este elemento no funcionará en Internet Explorer 6.0, ya que el anciano no comprende el posicionamiento fijo.



¿Te gustó el artículo? Compártelo