Contacts

Sélecteurs enfants. Sélecteurs css enfants et contextuels css select éléments enfants

Je pense que beaucoup de gens connaissent sélecteurs contextuels en CSS... Ils sont utilisés le plus souvent, cependant, les concepteurs de mise en page expérimentés sont bien conscients que parfois les sélecteurs contextuels introduisent certains problèmes. Ce problème est lié au fait que dans la structure d'un élément, il peut y avoir de nombreux éléments identiques imbriqués les uns dans les autres. Et il est nécessaire d'appliquer le style non pas à tous les éléments imbriqués, mais uniquement à l'élément directement enfant. C'est ce qu'ils utilisent pour cela. sélecteurs enfants en CSS.

Pour rendre le problème plus clair, donnons-nous un petit exemple. Ayons un tel Code HTML:



Premier paragraphe



La deuxième paragraphe


Et notre tâche est de faire du rouge seulement " La deuxième paragraphe". Si nous écrivons en utilisant le sélecteur de contexte :

Conteneur p (
La couleur rouge;
}

Ensuite, les deux paragraphes deviendront rouges, ce dont nous n'avons pas du tout besoin. Cette tâche est très facile à résoudre en utilisant sélecteurs enfants en CSS:

Conteneur> p (
La couleur rouge;
}

Tout, maintenant nous ne sommes devenus que rouges " La deuxième paragraphe". Étant donné que ce paragraphe particulier est directement enfant de .récipient... UNE " Premier paragraphe" est un enfant de l'interne div ainsi, il n'est pas soumis au sélecteur d'enfant.

C'est avec quelle facilité ces tâches sont résolues, cependant, il y a un énorme inconvénient. sélecteurs enfants en CSS- ils ne fonctionnent pas dans les navigateurs Internet Explorer ... Pour cette raison, leur utilisation est hautement indésirable. Mais si vous vous rencontrez soudainement quelque part, maintenant vous saurez ce que cela signifie type donné sélecteurs et ce qu'il fait.

Vous avez atteint la troisième partie de ce chapitre. Ici, vous apprendrez à utiliser les sélecteurs enfants en CSS, ainsi que quelques pseudo-classes supplémentaires pour un échantillonnage plus précis.

Sélecteurs CSS enfants

Dans l'article précédent, nous avons parlé des relations entre les éléments d'un document HTML, y compris les enfants. Jetons un coup d'œil à un exemple de la façon dont ces relations peuvent être utilisées dans CSS.

Imaginez que vous n'ayez qu'à styliser ces balises

Quels sont les enfants de sans affecter le reste

(Par example,

Filiales de

).
Comment faire? Très simple : créons un sélecteur enfant :

Corps> p (couleur : # 333 ;)

Remarquez le symbole > après le corps. Avec lui, vous indiquez que le style est appliqué exclusivement aux balises enfants.

Parent ... Si le symbole est supprimé, le style sera appliqué à absolument toutes les balises.

Qui sont à l'intérieur de l'étiquette , bien qu'ils puissent ne pas en être les enfants.

Pseudo-classes supplémentaires

Il existe un certain nombre de pseudo-classes dans CSS3 pour travailler avec des enfants. Vous trouverez ci-dessous une description de chacune d'entre elles, des exemples d'utilisation, ainsi que les différences entre les pseudo-classes de la forme « enfant » et « de-type ».

  • : first-child - Cette pseudo-classe peut être utilisée pour styliser l'élément spécifié de la page Web, à condition qu'il soit la première
  • : last-child - le style est appliqué à l'élément de page Web spécifié, à condition qu'il soit le dernier un enfant de son parent ;
  • : nth-child - vous permet de sélectionner des enfants pairs (pairs) et impairs (impairs) ; vous pouvez également utiliser cette pseudo-classe pour styliser des enfants en alternance en utilisant des expressions comme a + b et des nombres ;
  • : only-child - S'applique à l'élément enfant, à condition qu'il soit le seul un enfant avec un parent;
  • : first-of-type - le style est appliqué à au premier élément du type spécifié(même si cet élément n'est pas le premier enfant de son parent et qu'il y a d'autres enfants d'autres types au-dessus) ;
  • : last-of-type - fonctionne exactement de la même manière que la pseudo-classe précédente, avec la seule différence que le style est appliqué à au dernier élément du type spécifié;
  • : nth-of-type - fonctionne comme : nth-child, mais se concentre sur un typeélément;
  • : only-of-type - s'applique à un enfant du type spécifié, à condition que le parent l'ait le seul enfant de son genre.

Exemple d'utilisation : first-child, : last-child et : nth-child

Premier enfant

Deuxième enfant

Troisième enfant

Nombre impair
Nombre pair
Nombre impair
Nombre pair

Dernier enfant

/ * CSS * / p : first-child (font-weight : bold ; text-transform : majuscule ;) p : last-child (font-style : italic ; font-size : 0.8em ;) p : nth-child ( 3) (couleur : rouge ;) tr : nième enfant (impair) (couleur d'arrière-plan : # A2DED0 ;) tr : nième enfant (pair) (couleur d'arrière-plan : # C8F7C5 ;) Capture d'écran : application : premier enfant, : dernier-enfant et : nième-enfant

Nous avons écrit un style CSS pour les enfants d'un simple document HTML, où la balise

est le parent des balises

,

... Jetons un coup d'œil au CSS dans l'ordre.

La première règle - p : first-child - traite de l'élément p : s'il est le premier enfant de son parent, puis le style lui est appliqué (dans notre cas, il est en gras et convertit le texte en majuscule). Si dans le code HTML donné immédiatement après la balise d'ouverture

ajouter une autre balise (par exemple,

), alors le style p: first-child ne sera plus affiché car

cessera d'être la première balise enfant. Dans ce cas, le premier enfant sera h2.

La même chose se produit avec la règle p: last-child - le style CSS sera appliqué à la balise

Seulement quand il apparaît le dernier enfant de son parent... Ajouter après

Toute autre balise d'un type différent et vous verrez que la règle p: last-child ne s'appliquera plus.

La règle p: nième-enfant (3) fonctionne pour troisième balise enfant

(Ceci est attesté par le chiffre 3 entre parenthèses). La couleur de la police de ce paragraphe devient rouge. Vous pouvez changer le nombre 3 (par exemple, en 2) et voir le résultat.

Les règles tr:nth-child (impair) et tr:nth-child (pair) fonctionnent respectivement pour les éléments tr impairs et pairs. Vous pouvez voir le résultat dans la capture d'écran, ainsi que copier l'intégralité du code et expérimenter vous-même les styles.

Exemple d'utilisation : first-of-type, : last-of-type, : nth-of-type et : only-of-type

Premier enfant

Deuxième enfant

Troisième enfant

Quatrième enfant

Cinquième enfant

Dernier enfant

/ * CSS * / p : first-of-type (couleur : violet ; text-transform : majuscule ;) p : last-of-type (font-style : italic ; font-size : 0.8em ;) p : nth- of-type (3) (couleur : rouge ;) p : nième de type (impair) (couleur d'arrière-plan : # A2DED0 ;) p : nième de type (pair) (couleur d'arrière-plan : # C8F7C5 ;) h3 : only-of-type (text-decoration : underline ;)
Capture d'écran : Application : premier du type, : dernier du type, : nième du type et : seul du type

La première règle CSS que vous voyez est p: first-of-type. Qu'est ce que ça fait? Il sélectionne un enfant de type p, qui la première se produit chez le parent. Et peu importe où cette balise se trouve parmi les éléments d'autres types - sur le premier, le deuxième ou le dixième. C'est la différence entre les pseudo-classes : first-child et : first-of-type.

La deuxième règle, p: last-of-type, applique le style à le dernier un enfant de type p. Comme vous pouvez le voir sur le code HTML, après la dernière balise

il y a aussi une étiquette

, dont la présence n'affecte en rien l'exécution de la règle CSS (contrairement à l'option avec : last-of-child).

La règle suivante - p: nth-of-type (3) - change la couleur de la police en rouge. Applique ce style à la balise

Lequel est troisième par un élément de son propre type au niveau du parent. Dans la capture d'écran, vous pouvez voir que le rouge est appliqué à la balise

Qui est en fait le cinquième enfant de la balise

... Mais si vous ne tenez pas compte des éléments d'autres types, il s'avère que la balise

Avec la police rouge il est à la troisième place (parmi les balises de son type). C'est ainsi que fonctionne cette règle.

Les règles p : nième de type (pair) et p : nième de type (impair) fonctionnent de manière similaire : puisque le nom p est donné avant les deux points, les enfants pairs et impairs de type p sont sélectionnés et colorés avec couleurs prédéfinies... Les autres éléments sont ignorés.

La dernière règle - h3 : only-of-type - s'applique au contenu de la balise

en faisant souligner le texte. Ce style ne fonctionne que parce que la balise

est un le seul un enfant de son genre. Si vous ajoutez une autre balise à votre code HTML

, le style ne sera pas appliqué.

conclusions

Un sélecteur CSS enfant vous permet de styliser l'enfant d'un document HTML en fonction de l'identité du parent.

À l'aide de pseudo-classes supplémentaires : first-child, : last-child, : nth-child, : only-child, vous pouvez styliser les éléments enfants d'un document HTML, en vous concentrant sur leur emplacement, leur numérotation dans l'arborescence des éléments.

Les pseudo-classes : first-of-type,: last-of-type,: nth-of-type,: only-of-type vous permettent de styliser les éléments enfants d'un document HTML en fonction de leur type et de leur numérotation dans l'élément arbre...

Dernière mise à jour : 21.04.2016

Un groupe spécial de pseudo-classes est formé de pseudo-classes qui vous permettent de sélectionner des enfants spécifiques :

    : first-child : représente l'élément qui est le premier enfant

    : last-child : représente l'élément qui est le dernier enfant

    : only-child : représente un élément qui est le seul enfant dans un conteneur

    : only-of-type : sélectionne un élément qui est le seul élément d'un type spécifique (tag) dans un conteneur

    : nth-child (n) : représente l'élément enfant qui a un numéro spécifique n, par exemple le deuxième enfant

    : nth-last-child (n) : représente l'élément enfant qui a un numéro spécifique n, à partir de la fin

    : nth-of-type (n) : sélectionne un enfant d'un type spécifique qui a un numéro spécifique

    : nth-last-of-type (n) : sélectionne un enfant d'un type spécifique qui a un numéro spécifique à partir de la fin

Pseudo-classe du premier enfant

Nous utilisons la pseudo-classe first-child pour sélectionner les premiers liens dans les blocs :

Sélecteurs en CSS3

Comprimés

Téléphones intelligents

Meilleurs smartphones 2016

Samsung Galaxy S7
Apple iPhone SE
Huawei P9


R : first-child est stylisé sur un lien s'il s'agit du premier enfant d'un élément.

Et dans le deuxième bloc, le premier élément est un paragraphe, donc aucun des liens n'est stylisé.

Pseudo-classe du dernier enfant

Nous utilisons la pseudo-classe last-child :

Sélecteurs en CSS3

Téléphones intelligents

Comprimés



Le sélecteur a: last-child définit le style des liens qui sont les derniers enfants.

Dans le premier bloc, le lien est le dernier élément enfant. Mais dans le second, le dernier enfant est le paragraphe, donc dans le second bloc, le style n'est appliqué à aucun des liens.

Sélecteur d'enfant unique

Le : sélecteur d'enfant unique sélectionne les éléments qui sont les seuls enfants dans les conteneurs :

Sélecteurs en CSS3

Titre

Texte 1

Texte2

Texte3

Texte4



Les paragraphes avec les textes "Text1" et "Text4" sont les seuls enfants dans leurs conteneurs extérieurs, ils sont donc stylisés avec une couleur de police rouge.

La pseudo-classe unique en son genre

La pseudo-classe de type unique sélectionne un élément qui est le seul élément d'un type particulier dans le conteneur. Par exemple, un seul élément div, alors qu'il peut y avoir autant d'éléments d'autres types dans le même conteneur.

Sélecteurs en CSS3

Entête

Élément de paragraphe et d'étendue unique

Bas de page


Bien qu'un style soit défini pour les divs, il ne sera pas appliqué car il y a deux divs dans le conteneur de corps, pas un. Mais il n'y a qu'un seul élément p dans le corps, il sera donc stylisé. De plus, il n'y a qu'un seul élément span dans le conteneur p, il sera donc également stylisé.

La pseudo-classe du nième enfant

La pseudo-classe nième enfant vous permet de styliser chaque deuxième, troisième élément, uniquement les éléments pairs ou impairs, etc.

Par exemple, stylisons les lignes paires et impaires du tableau :

Sélecteurs en CSS3

Téléphones intelligents

SamsungGalaxy S7 Bord60000
PommeiPhone SE39000
MicrosoftLumia 65013500
AlcatelIdole s430000
HuaweiP960000
HTCHTC1050000
MeizuPro 640000
XiaomiMi535000


Pour définir le style des éléments impairs, la valeur "impair" est passée au sélecteur :

Tr : nième enfant (impair) ()

Pour styliser les éléments pairs, la valeur « pair » est transmise au sélecteur :

Tr : nième enfant (pair) ()

On peut aussi passer le numéro de l'élément à styliser à ce sélecteur :

Tr : nième enfant (3) (couleur d'arrière-plan : #bbb ;)

Dans ce cas, la troisième ligne est stylisée.

Une autre possibilité consiste à utiliser un espace réservé pour le numéro, qui est exprimé par la lettre n :

Tr : nième enfant (2n + 1) (couleur d'arrière-plan : #bbb ;)

Ici, le style est appliqué à chaque deuxième ligne impaire.

Le nombre avant n (dans ce cas 2) représente le prochain enfant à mettre en évidence. Le nombre qui suit le signe plus indique à partir de quel élément commencer la sélection, c'est-à-dire que +1 signifie commencer à partir du premier élément enfant.

Ainsi, dans ce cas, la sélection commence à partir du 1er élément, et le suivant est 2 * 1 + 1 = 3ème élément, puis 2 * 2 + 1 = 5ème élément, et ainsi de suite.

Par exemple, si nous voulons sélectionner chaque troisième élément, en commençant par le deuxième, nous pourrions écrire :

Tr : nième enfant (3n + 2) (couleur d'arrière-plan : #bbb ;)

La pseudo-classe : nth-last-child fournit essentiellement la même fonctionnalité, sauf que les éléments ne sont pas comptés depuis le début, mais depuis la fin :

Tr : nième-dernier-enfant (2) (couleur d'arrière-plan : #bbb; / * à 2 lignes de la fin, c'est-à-dire l'avant-dernière * /) tr : nième-dernier-enfant (2n + 1) (couleur d'arrière-plan : #eee ; / * lignes impaires commençant par la fin * /)

Pseudo-classe de type N

La pseudo-classe : nth-of-type vous permet de sélectionner un enfant d'un type spécifique par un numéro spécifique :

Tr : nième de type (2) (couleur d'arrière-plan : #bbb ;)

La pseudo-classe nth-last-of-type fonctionne de la même manière, seulement maintenant les éléments sont comptés à partir de la fin :

Tr : nième-dernier-type (2n) (couleur d'arrière-plan : #bbb ;)

  • La tâche en cours est la sélection des enfants.
  • Désignation - chaînage : sélecteur parent simple, combinateur ">", sélecteur enfant simple.
  • Exemple d'utilisation :

Fixons l'indentation gauche pour la liste directement imbriquée dans l'élément avec la classe de contenu (ces règles n'affecteront pas les listes du deuxième niveau d'imbrication) :

Contenu> ul (marge à gauche : 20px ;)

En savoir plus sur le sélecteur d'enfants

La principale différence entre le sélecteur enfant et celui évoqué plus haut réside dans le fait que si le sélecteur enfant sélectionne tous les descendants, quel que soit le niveau d'imbrication, alors le sélecteur enfant sélectionne uniquement les descendants de premier niveau, c'est-à-dire les éléments directement imbriqués. Par exemple, écrivons ceci :

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

... et ce code :

Ce texte sera noir. Celui-ci est gris car ce span est un enfant d'un div.

Il y a à nouveau du texte en noir. Et ce texte est noir aussi, puisque cette étendue n'est pas un enfant de la div. Son parent immédiat est la balise p.

Les sélecteurs CSS enfants sont des sélecteurs utilisés pour appliquer des styles aux éléments uniquement lorsqu'ils sont enfants d'autres éléments (parents). Comme les sélecteurs descendants, les sélecteurs enfants sont composites et sont constitués de sélecteurs simples (classes, identifiants, etc.).

Encore une fois, si vous avez oublié ce que sont les éléments enfants, souvenons-nous en analysant un exemple qui vous est déjà familier.

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

Un élément est appelé enfant d'un autre élément s'il se trouve à l'intérieur au premier niveau d'imbrication. Dans notre exemple<тег2>et<тег3>sont des filles<тег1>, une<тег4>- c'est une fille<тег3> .

Les sélecteurs d'enfants consistent en deux ou plusieurs sélecteurs simples séparés par ">", où le parent est indiqué en premier, puis son enfant, puis l'enfant de cet enfant, et ainsi de suite. C'est-à-dire que, comme dans les sélecteurs descendants, le chemin pour traverser l'arborescence du document est défini. Les styles seront appliqués uniquement aux éléments dont les sélecteurs sont les derniers de la liste. Syntaxe générale :

sélecteur1> sélecteur2 (

Les espaces des deux côtés du signe « > » peuvent être utilisés ou non, si vous le souhaitez.

Exemple d'utilisation de sélecteurs d'enfants CSS

Sélecteurs enfants

Paragraphe 1.

Paragraphe 2.



Résultat dans le navigateur

Paragraphe 1.

Paragraphe 2.

Dans cet exemple, vous devez faire attention à deux points. Il y a trois éléments ici, mais seulement deux d'entre eux ont des bordures, un remplissage et des marges. Pourquoi? Et le deuxième point. Seul le premier paragraphe a une couleur de texte bleue.

Internet Explorer 6.0 ne comprend pas les sélecteurs d'enfants, donc si vous construisez votre site avec cet ancien navigateur à l'esprit, gardez cela à l'esprit.

Sélecteurs enfants dans les tableaux HTML

De nombreux débutants (et parfois plus novices) dans la création de sites Web sont confrontés à certains problèmes lors de l'utilisation de sélecteurs d'enfants dans les tableaux HTML. Pour que vous compreniez ce que Dans la question, jetons un coup d'œil à une telle table commune.

Cellule 1.1Cellule 1.2
Cellule 2.1Cellule 2.2

Et maintenant une question. Que faites-vous si vous devez naviguer d'une balise vers des cellules à l'aide de sélecteurs enfants ? Si vous décidez d'écrire comme ceci, alors c'est faux :

tableau> tr> td ( valeur de la propriété; valeur de la propriété; ...)

Pouvez-vous deviner pourquoi c'est faux? Pas? Le fait est que vous avez oublié un élément de plus - qui, même s'il n'est pas spécifié explicitement, est toujours présent de manière invisible dans chaque tableau HTML. Il n'a tout simplement pas les balises d'ouverture et de fermeture requises, il est donc souvent négligé. D'ailleurs, oui, dans Tutoriel HTML nous ne l'avons pas parcouru avec vous, car en réalité son indication explicite est rarement nécessaire. Eh bien, je pense que vous avez déjà deviné ce que ce sera entrée correcte, mais je vais vous montrer tout de même.

table> tbody> tr> td ( valeur de la propriété; valeur de la propriété; ...)

Soit dit en passant, non seulement les tableaux ont des éléments avec des balises d'ouverture facultatives, il existe également de tels éléments. C'est juste qu'en pratique les "problèmes d'oubli" se posent le plus souvent avec les tableaux, c'est pourquoi j'ai attiré votre attention sur ce point.

Devoirs.

  1. Installez la police Arial 0.9em et un arrière-plan sur la page.
  2. Écrivez des titres et des paragraphes sur la page, modifiez la taille et la couleur du texte du titre comme bon vous semble.
  3. Faites les liens directement dans les paragraphes de la page en bleu sans souligner. Mais en même temps, si les liens sont en plus encadrés avec n'importe quelle balise, par exemple, pour l'italique, alors ils devraient déjà être affichés avec un soulignement et du rouge. Encore une fois, j'attire votre attention sur le fait que vous n'avez pas besoin d'écrire des styles de lien avec chaque balise de cadrage séparément, faites-le de manière universelle. Comment? Pensez-y.
  4. Créez un petit menu sur le côté droit de la page et corrigez-le, pour cela, vous avez besoin d'une propriété et de quelques propriétés connexes, vous le comprendrez là-bas. Dans le même temps, laissez le menu non seulement rester en place dans la fenêtre du navigateur, mais également ne pas parcourir le contenu de la page lors du défilement.

Je pense que le dernier point de la leçon sera le plus difficile pour vous, mais n'essayez pas de vous immerger complètement dans la maîtrise du positionnement tout de suite. Fais juste tes devoirs. À propos, cet élément ne fonctionnera pas dans Internet Explorer 6.0, car le vieil homme ne comprend pas le positionnement fixe.



Vous avez aimé l'article ? Partagez-le