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
,
Samsung | Galaxy S7 Bord | 60000 |
Pomme | iPhone SE | 39000 |
Microsoft | Lumia 650 | 13500 |
Alcatel | Idole s4 | 30000 |
Huawei | P9 | 60000 |
HTC | HTC10 | 50000 |
Meizu | Pro 6 | 40000 |
Xiaomi | Mi5 | 35000 |
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 :
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>...тег2> <тег3><тег4>...тег4>тег3> тег1>
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
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.1 | Cellule 1.2 |
Cellule 2.1 | Cellule 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.
- Installez la police Arial 0.9em et un arrière-plan sur la page.
- Écrivez des titres et des paragraphes sur la page, modifiez la taille et la couleur du texte du titre comme bon vous semble.
- 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.
- 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.