Maison / Réseaux sociaux / css référençant des éléments enfants. Techniques de manipulation du DOM : éléments parents, enfants et voisins. Questions à vérifier

css référençant des éléments enfants. Techniques de manipulation du DOM : éléments parents, enfants et voisins. Questions à vérifier

Bonjour chers lecteurs ! Poursuivant le thème des sélecteurs CSS, je souhaite attirer votre attention description des sélecteurs d'enfant et de contexte, ainsi que leur analyse comparative, car selon la logique d'application, ils sont très similaires, bien qu'ils présentent certaines différences.

Dans mes publications, je me suis attardé en détail sur divers types de CSS sélecteurs : ; aussi bien que . Au fait, dans le dernier article, où ils ont compris différents types sélecteur d'attributs, j'ai décrit en détail comment mes calculs théoriques peuvent être immédiatement vérifiés en apportant des modifications au code HTML et CSS en ligne à l'aide de l'outil intégré Google Chrome(). Ces outils d'édition ont les dernières modifications de tous les navigateurs populaires, y compris le plugin Firebug pour Firefox ().

Vous pouvez également étudier le matériel théorique de ce post en éditant n'importe quelle page de n'importe quel site ! Pour cela, appuyez simplement sur F12 si vous utilisez Google Chrome ou MozillaFirefox(). Et maintenant je vais vous présenter le contenu de la balise p, sur l'exemple de laquelle nous allons étudier sélecteurs CSS enfant et contexte:

Ce paragraphe comprend em et balises de formatage fort, qui mettent en surbrillance le texte audacieux et en italique.

À l'aide de l'outil d'édition décrit ci-dessus, j'ai inséré ce paragraphe directement dans cet article en tapant le texte approprié dans la partie gauche de la fenêtre d'édition, à la suite de quoi le texte de ce paragraphe est apparu tout en haut de la page :


Cette construction HTML , . Ce paragraphe sera expérimental dans la publication d'aujourd'hui, en utilisant son exemple, je montrerai comment la conception de son texte change, en fonction des sélecteurs - enfant ou contexte - utilisés dans la règle CSS.

Un enfant est un élément situé directement à l'intérieur de l'élément parent.. Avant de passer directement au sujet, je vais donner une image qui reflète la hiérarchie des balises dans Document HTML sur l'exemple du paragraphe dont le texte est donné ci-dessus et que nous analyserons aujourd'hui :

Cette conception est également appelée arbre d'éléments. Cette figure montre bien l'imbrication des conteneurs, ce qui implique une relation hiérarchique entre les balises. La balise de paragraphe p est un enfant de la relation . En même temps, la balise strong n'est pas un enfant de la div, puisqu'elle est située dans le conteneur p.

Sélecteur CSS enfant

Le sélecteur enfant dans l'arborescence des éléments est toujours directement à l'intérieur de l'élément parent, dans ce cas la syntaxe pour écrire un sélecteur CSS est la suivante :

Le style sera appliqué au sélecteur 2, mais uniquement s'il s'agit d'un enfant du sélecteur 1. Regardons de plus près en utilisant la capture d'écran ci-dessus avec l'arborescence des éléments. Par exemple, en suivant la syntaxe, vous pouvez définir la règle suivante :

P> em (couleur : vert ;)

Cette règle affectera le dernier mot du paragraphe en "italique" car c'est ce qui est enfermé entre les balises em d'ouverture et de fermeture. La balise em est un enfant de p car elle est placée directement à l'intérieur de celle-ci, de sorte que le texte du contenu, à savoir le mot "italique", sera coloré en vert.


Cependant, l'autre balise em n'est pas un enfant direct de la balise p, car elle fait partie de la balise strong, de sorte que la partie « em et balises de formatage fort » du paragraphe ne sera pas colorée.

Sélecteur CSS contextuel

Il est temps de comprendre qu'est-ce que le sélecteur de contexte CSS. Lors de la mise en page d'une page particulière du site, les balises sont très souvent imbriquées les unes dans les autres. Pour que les styles de ces éléments fonctionnent correctement, des sélecteurs sont utilisés qui agissent dans un certain contexte, d'où le nom.

Si pour que la règle CSS soit appliquée, le sélecteur enfant doit nécessairement être situé directement à l'intérieur de l'élément parent (premier niveau d'imbrication), alors pour le sélecteur de contexte, cela n'a aucune importance et n'importe quel niveau d'imbrication peut être appliqué, de toute façon, l'élément les propriétés seront transférées du parent. La syntaxe est donc :

Comme vous pouvez le voir, le sélecteur de contexte se compose de simples sélecteurs séparés par un espace. Pour les sélecteurs contextuels, il est permis d'utiliser deux balises imbriquées ou plus. Composons maintenant la règle CSS pour le paragraphe sous test, que j'ai cité ci-dessus :

P'em (couleur : vert ;)


Comme vous pouvez le voir, non seulement le texte de la partie du contenu du paragraphe, qui est directement enfermé dans la balise de formatage em, c'est-à-dire le mot "italique", est coloré en vert, mais aussi le texte d'une autre balise em , qui fait également partie de la balise strong. Cela s'est produit parce que la règle avec le sélecteur de contexte est en vigueur, pour laquelle le niveau d'imbrication n'est pas important, contrairement au sélecteur enfant. C'est la différence fondamentale entre les sélecteurs d'enfant et de contexte.

Examinons un autre exemple de l'interaction des sélecteurs de contexte et d'enfant avec notre paragraphe. Écrivons les règles CSS suivantes pour les sélecteurs d'enfant et de contexte :

Div em (couleur : rouge ;) p > em (couleur : vert ;)

Après cela, notre paragraphe prend le format suivant :


Comme vous pouvez le voir, le morceau de texte enfermé dans les balises em et strong est coloré en rouge parce que la règle de sélection contextuelle est vraie pour lui, c'est-à-dire que la balise em est enfermée dans les conteneurs strong et div, et le niveau d'imbrication, comme déjà noté, n'a pas d'importance .

La question se pose : pourquoi le mot « italique », qui est aussi le contenu de em, est-il coloré en vert ? Après tout, la règle du sélecteur de contexte est également pertinente pour lui. Mais la règle du sélecteur enfant s'applique également à cette partie du texte du paragraphe, car elle ne contredit pas la condition selon laquelle, pour le sélecteur enfant, l'élément doit se trouver directement dans la balise p.

Le fait est que CSS a une loi de priorité pour les propriétés CSS ci-dessous. Autrement dit, dans ce cas, la règle du sélecteur enfant est inférieure dans le document aux styles CSS spécifiés pour le sélecteur contextuel du conteneur div. Par conséquent, le mot "italique" est vert. Si vous les échangez, la règle « p> em (couleur : vert ;) » cesse de fonctionner et la section « italique » du texte sera rouge.

L'objectif principal de ce sélecteur découle de son nom et est de faire référence à l'élément enfant. Affiché à l'aide du signe élémentaire ">", qui relie l'élément enfant à l'élément parent. Il convient également de noter que des sélecteurs simples sont utilisés en circulation. A titre d'exemple, considérons l'encodage suivant :

Élément > ul ( padding-top : 20px ; )

Cet encodage signifie que la liste imbriquée dans l'élément aura un remplissage intérieur de 20 pixels à partir du haut. La présence du signe ">" dans cette entrée indique que la règle ne s'appliquera qu'aux listes du premier niveau d'imbrication.

Une analyse détaillée du fonctionnement du sélecteur enfant

Le sélecteur d'élément enfant a des propriétés similaires au sélecteur enfant. Cependant, il y a une fonctionnalité qui montre différence fondamentale données de transaction. Elle réside dans le fait que l'influence du sélecteur descendant s'étend à absolument tous les éléments, tandis que le sélecteur fils subordonne les styles des positions du premier niveau de classifications.

L'exemple suivant vous aidera à mieux comprendre le travail de l'opérateur du sélecteur enfant :

Div > p ( couleur : #ff0000; /* rouge */ )

< div> Ligne donnée sera par défaut en texte noir.< span>Cette ligne est recolorée en rouge car p est une balise enfant pour la div. < p>Encore une fois, nous voyons des lettres noires.< span>Ici, nous voyons également des symboles noirs, car la balise p est le parent de cette étendue.

Cet exemple confirme le fonctionnement de l'opérateur sélecteur enfant en fonction du degré d'imbrication.

Restriction pour l'application de l'opérateur de sélecteur enfant

Il est à noter que cette opération pris en charge par tous les navigateurs sauf légendaire Internet Explorer 6. Je pense que peu de gens utilisent ce navigateur, mais s'il y en a des uniques, alors il y a une issue pour eux, qui sera décrite dans un article séparé.

Pourquoi est-il utilisé

Les programmeurs se réfèrent aux sélecteurs d'éléments enfants lorsqu'ils doivent attribuer leur propre style unique aux éléments imbriqués. De plus, l'utilisation de ce sélecteur peut réduire la quantité de CSS, ce qui améliorera la lisibilité du document. Comme le montre la pratique, cette opération est le plus souvent utilisée lors de la création de menus déroulants.

De plus, le sélecteur d'élément enfant est utilisé pour attribuer des styles uniques aux éléments dont les parents sont déjà connus à l'avance. Autrement dit:

Principal > en-tête( /* le style ne s'applique qu'à l'en-tête principal */ }

Cet exemple est valable dans les cas où la balise header est utilisée pour mettre en évidence les titres des articles. Dans notre cas, nous définissons la conception uniquement pour l'en-tête principal et ne touchons pas les secondaires. Cette technique évite également l'utilisation d'identifiants inutiles, ce qui allège le poids du fichier CSS et le rend plus lisible.

Résumé

Ainsi, l'opérateur d'élément enfant peut être utilisé non seulement pour concevoir des menus déroulants, mais également pour optimiser légèrement votre ressource Internet pour le travail des robots de recherche.

Les sélecteurs enfants CSS 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 enfants, les sélecteurs enfants sont des sélecteurs composés constitués de sélecteurs simples (classes, identifiants, etc.).

Et encore une fois, si vous avez oublié ce que sont les éléments enfants, rappelons-le en examinant un exemple que vous connaissez déjà.

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

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

Les sélecteurs enfants consistent en deux ou plusieurs sélecteurs simples séparés par ">", où le parent est répertorié en premier, puis son enfant, puis l'enfant de cet enfant, et ainsi de suite. Autrement dit, comme dans les sélecteurs descendants, le chemin à travers l'arborescence du document est spécifié. Les styles ne seront appliqués qu'aux éléments dont les sélecteurs sont les derniers dans la liste. Syntaxe générale :

sélecteur1 > sélecteur2 (

Les espaces des deux côtés du signe ">" peuvent être inclus ou non, selon les besoins.

Un exemple d'utilisation de sélecteurs 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 seuls deux d'entre eux ont des bordures, un rembourrage et des marges. Pourquoi? Et le deuxième point. Seul le premier paragraphe a du texte bleu.

Internet Explorer 6.0 ne comprend pas les sélecteurs enfants, donc si vous concevez 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 non débutants) dans la création de sites rencontrent certains problèmes lors de l'utilisation de sélecteurs enfants dans des tableaux HTML. Pour que vous compreniez ce que Dans la question, regardons une telle table ordinaire.

Cellule 1.1Cellule 1.2
Cellule 2.1Cellule 2.2

Et maintenant la question. Que feriez-vous si vous aviez besoin d'utiliser des sélecteurs enfants pour passer de la balise aux cellules ? 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 autre élément - qui, même s'il n'est pas explicitement spécifié, 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, Tutoriel HTML nous ne l'avons pas parcouru, car en réalité son indication explicite est rarement nécessaire. Eh bien, je pense que vous avez déjà deviné quelle sera la bonne entrée, mais je vais quand même vous montrer.

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, mais il existe également de tels éléments. C'est juste qu'en pratique, les "problèmes d'oubli" surviennent le plus souvent avec les tables, c'est pourquoi j'ai attiré votre attention là-dessus.

Devoirs.

  1. Définissez la police de la page sur Arial avec une taille de 0,9 em et un arrière-plan.
  2. Écrivez plusieurs titres et 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 les souligner. Mais en même temps, si les liens sont en outre encadrés avec une balise, par exemple, pour les italiques, ils doivent déjà être affichés avec un soulignement et une couleur rouge. Encore une fois, j'attire votre attention sur le fait qu'il n'est pas nécessaire de prescrire des styles de lien avec chaque balise de cadrage séparément, faites-le universellement. Comment? Pense.
  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 autres propriétés qui l'accompagnent, 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 aussi, lors du défilement, ne pas ramper sur le contenu de la page.

Je pense que le dernier point de la leçon sera le plus difficile pour vous, mais n'essayez pas de vous immerger immédiatement complètement dans le développement du positionnement. Faites juste vos devoirs. Soit dit en passant, cet élément ne fonctionnera pas dans Internet Explorer 6.0, car le vieil homme ne comprend pas le positionnement fixe.

Vlad Merjevitch

Un élément enfant est un élément qui se trouve directement à l'intérieur de l'élément parent. Pour mieux comprendre les relations entre les éléments du document, décomposons un peu de code (Exemple 12.1).

Exemple 12.1. Imbriquer des éléments dans un document

HTML5 CSS 2.1 IE Cr Op Sa Fx

Lorem ipsum

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.

Ut wisis enim ad minim veniam, quis nostrud exerci tution ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Dans cet exemple, plusieurs conteneurs sont utilisés, qui sont situés les uns dans les autres dans le code. Cela se voit plus clairement dans l'arborescence des éléments, c'est le nom de la structure des relations entre les balises du document (Fig. 12.1).

Riz. 12.1. Arbre d'éléments pour un exemple

Sur la fig. 12.1 sous une forme pratique, l'imbrication des éléments et leur hiérarchie sont présentés. Ici en tant qu'enfant de la balise

balise préférée

Cependant, la balise n'est pas un enfant d'une balise

, car il se trouve dans un conteneur

Revenons aux sélecteurs. Un sélecteur enfant est celui qui se trouve directement à l'intérieur de l'élément parent dans l'arborescence des éléments. La syntaxe d'utilisation de ces sélecteurs est la suivante.

Sélecteur 1 > Sélecteur 2 ( Description des règles de style )

Le style est appliqué au sélecteur 2, mais uniquement s'il s'agit d'un enfant du sélecteur 1.

En se référant à nouveau à l'exemple 12-1, le style P > EM ( color: red ) serait défini pour le premier paragraphe du document, car la balise est à l'intérieur du conteneur

Et ne donnera aucun résultat pour le deuxième paragraphe. Et tout ça parce que le tag au deuxième alinéa se trouve dans le conteneur , donc la condition d'imbrication est violée.

Dans leur logique, les sélecteurs enfants sont similaires aux sélecteurs de contexte. La différence entre eux est la suivante. Un sélecteur d'enfant n'est stylisé que lorsqu'il s'agit d'un enfant direct, en d'autres termes, directement dans l'élément parent. Pour un sélecteur de contexte, n'importe quel niveau d'imbrication est autorisé. Pour bien comprendre ce dont il s'agit, analysons le code suivant (exemple 12.2).

Exemple 12.2. Sélecteurs contextuels et enfants

HTML5 CSS 2.1 IE Cr Op Sa Fx

Sélecteurs enfants

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.

Le résultat de cet exemple est montré sur la Fig. 12.2.

Riz. 12.2. Couleur du texte définie avec le sélecteur enfant

Par balise dans l'exemple, deux règles fonctionnent simultanément : sélecteur de contexte (balise situé à l'intérieur

) et sélecteur enfant (balise est un enfant de

). Dans le même temps, les règles sont équivalentes, puisque toutes leurs conditions sont remplies et ne se contredisent pas. Dans de tels cas, le style est appliqué, qui se trouve dans le code ci-dessous, de sorte que le texte en italique s'affiche en rouge. Dès que les règles sont inversées et mises DIV I en dessous, la couleur du texte passera du rouge au vert.

Notez que dans la plupart des cas, l'ajout de sélecteurs enfants peut être omis en les remplaçant par des sélecteurs de contexte. Cependant, l'utilisation de sélecteurs enfants vous donne plus de contrôle sur les styles d'éléments, ce qui vous permet finalement d'obtenir le résultat souhaité, ainsi qu'un code simple et descriptif.

Il est plus pratique d'utiliser ces sélecteurs pour les éléments qui ont une structure hiérarchique - cela inclut, par exemple, les tableaux et diverses listes. L'exemple 12-3 montre comment modifier l'apparence d'une liste à l'aide de styles. En imbriquant une liste dans une autre, on obtient une sorte de menu. Les titres sont disposés horizontalement, tandis que l'ensemble des liens est placé verticalement sous les titres (Figure 12.3).

Riz. 12.3. Liste des menus

Pour positionner le texte horizontalement, la propriété de style flottant est ajoutée au sélecteur LI. Afin de séparer le style des listes horizontales et verticales, des sélecteurs enfants sont utilisés (exemple 12.3).

Exemple 12.3. Utilisation des sélecteurs enfants

HTML5 CSS 2.1 IE Cr Op Sa Fx

Sélecteurs enfants

Dans cet exemple, les sélecteurs enfants doivent séparer le style des éléments de liste de niveau supérieur et des listes imbriquées qui effectuent différentes tâches, de sorte que leur style ne doit pas se chevaucher.

Questions à vérifier

1. De quelle couleur sera le gras ? texte cursif dans du code

Les normes d'éclairage sont basées sur base de classification des oeuvres visuelles pour certaines raisons quantitatives.

Lorsque vous utilisez le style suivant ?

P (couleur : vert ; )
B (couleur : bleu ; )
Je (couleur : orange ; )
B > I ( couleur : olive ; )
P > I (couleur : jaune ; )

  1. Vert.
  2. Bleu.
  3. Orange.
  4. Olive.
  5. Jaune.

2. Quel élément est le parent de la balise ? </b></p> <ol><li><HEAD></li> <li><BODY></li> <li><HTML></li> <li><META></li> <li><!DOCTYPE></li> </ol><p><b>3. Pour quelle balise l'élément<!DOCTYPE>agir en tant que parent?</b></p> <ol><li><HTML></li> <li><TITLE></li> <li><BODY></li> <li><HEAD></li> <li>Pas pour une seule balise.</li> </ol><h2>Réponses</h2> <p>1. Olivier.</p> <p>3. Pas pour une balise.</p> <p>Les applications Web complexes et lourdes sont devenues courantes de nos jours. Les bibliothèques multi-navigateurs et faciles à utiliser comme jQuery avec leurs nombreuses fonctionnalités peuvent grandement aider à la manipulation DOM à la volée. Par conséquent, il n'est pas surprenant que de nombreux développeurs utilisent ces bibliothèques plus souvent qu'ils ne travaillent avec l'API DOM native, qui posait de nombreux problèmes. Et bien que les différences entre les navigateurs soient toujours un problème, le DOM est en meilleure forme qu'il y a 5 ou 6 ans, lorsque jQuery gagnait en popularité.</p> <p>Dans cet article, je vais démontrer la capacité du DOM à manipuler le HTML, en me concentrant sur les relations parent, enfant et voisin. Je conclurai avec une ventilation de la prise en charge de ces fonctionnalités par les navigateurs, mais gardez à l'esprit que la bibliothèque de types jQuery reste une bonne option en raison de bogues et d'incohérences dans l'implémentation des fonctionnalités natives.</p> <h2>Compter les nœuds enfants</h2> <p>Pour la démonstration, j'utiliserai ce qui suit <a href="https://sushiandbox.ru/fr/master-pc/osnovnye-tegi-i-atributy-yazyka-html-osnovnye-tegi-html-osnovnye.html">Balisage HTML</a>, au cours de l'article nous le changerons plusieurs fois :</p><p> <body> <ul id="myList"> <li>Exemple un</li> <li>exemple deux</li> <li>exemple trois</li> <li>exemple quatre</li> <li>exemple cinq</li> <li>Exemple 6</li> </ul> </body> </p><p>Var maListe = document.getElementById("maListe"); console.log(myList.children.length); // 6 console.log(myList.childElementCount); // 6</p><p>Comme vous pouvez le voir, les résultats sont les mêmes, bien que les techniques utilisées soient différentes. Dans le premier cas, j'utilise la propriété children. Ceci est une propriété en lecture seule et renvoie une collection <a href="https://sushiandbox.ru/fr/browsing-the-internet/ravnenie-po-centru-v-html-vyravnivanie-elementov-v-html-vyravnivanie-teksta-po.html">Éléments HTML</a>, situé à l'intérieur de l'élément demandé ; pour compter leur nombre, j'utilise la propriété length de cette collection.</p> <p>Dans le deuxième exemple, j'utilise la méthode childElementCount, que je trouve plus propre et potentiellement plus maintenable (plus sur cela plus tard, je ne pense pas que vous aurez du mal à comprendre ce qu'il fait).</p> <p>Je pourrais essayer d'utiliser childNodes.length (au lieu de children.length), mais regardez le résultat :</p><p>Var maListe = document.getElementById("maListe"); console.log(myList.childNodes.length); // 13</p><p>Il renvoie 13 car childNodes est une collection de tous les nœuds, y compris les espaces - gardez cela à l'esprit si vous vous souciez de la différence entre les nœuds enfants et les nœuds d'éléments enfants.</p> <h2>Vérification de l'existence de nœuds enfants</h2> <p>Pour vérifier si un élément a des nœuds enfants, je peux utiliser la méthode hasChildNodes(). La méthode renvoie un booléen indiquant leur présence ou leur absence :</p><p>Var maListe = document.getElementById("maListe"); console.log(myList.hasChildNodes()); // vrai</p><p>Je sais que ma liste a des nœuds enfants, mais je peux modifier le code HTML pour qu'il n'y en ait pas ; maintenant le balisage ressemble à ceci :</p><p> <body> </body> </p><p>Et voici le résultat de l'exécution à nouveau de hasChildNodes() :</p><p>Console.log(myList.hasChildNodes()); // vrai</p><p>La méthode renvoie toujours true . Bien que la liste ne contienne aucun élément, elle contient un espace, qui est un type de nœud valide. Cette méthode considère tous les nœuds, pas seulement les nœuds d'élément. Pour que hasChildNodes() renvoie false, nous devons à nouveau modifier le balisage :</p><p> <body> </body> </p><p>Et voilà que le résultat attendu s'affiche dans la console :</p><p>Console.log(myList.hasChildNodes()); // faux</p><p>Bien sûr, si je sais que je pourrais rencontrer un espace, je vérifie d'abord l'existence de nœuds enfants, puis j'utilise la propriété nodeType pour déterminer s'il y a des nœuds d'élément parmi eux.</p> <h2>Ajout et suppression d'éléments enfants</h2> <p>Il existe des techniques qui peuvent être utilisées pour ajouter et supprimer des éléments du DOM. La plus célèbre d'entre elles est basée sur une combinaison des méthodes createElement() et appendChild().</p><p>VarmyEl = document.createElement("div"); document.body.appendChild(myEl);</p><p>Dans ce cas, je crée <div>en utilisant la méthode createElement() puis en l'ajoutant au body . Très simple et vous avez probablement déjà utilisé cette technique.</p> <p>Mais au lieu d'insérer spécifiquement <a href="https://sushiandbox.ru/fr/master-pc/peretaskivanie-elementov-drag-and-drop-sozdaem-prostoi-html5-drag-drop-interfeis.html">élément créé</a>, je peux aussi utiliser appendChild() et simplement déplacer l'élément existant. Supposons que nous ayons le balisage suivant :</p><p> <div id="c"> <ul id="myList"> <li>Exemple un</li> <li>exemple deux</li> <li>exemple trois</li> <li>exemple quatre</li> <li>exemple cinq</li> <li>Exemple 6</li> </ul> <p>exemple de texte</p> </div> </p><p>Je peux changer l'emplacement de la liste avec le code suivant :</p><p>Var maListe = document.getElementById("maListe"), conteneur = document.getElementById("c"); conteneur.appendChild(maListe);</p><p>Le DOM final ressemblera à ceci :</p><p> <div id="c"> <p>exemple de texte</p> <ul id="myList"> <li>Exemple un</li> <li>exemple deux</li> <li>exemple trois</li> <li>exemple quatre</li> <li>exemple cinq</li> <li>Exemple 6</li> </ul> </div> </p><p>Notez que la liste entière a été retirée de sa place (au-dessus du paragraphe) puis insérée après celle-ci, avant le corps de fermeture . Bien que la méthode appendChild() soit généralement utilisée pour ajouter des éléments créés avec createElement() , elle peut également être utilisée pour déplacer des éléments existants.</p> <p>Je peux également supprimer complètement un élément enfant du DOM avec removeChild() . Voici comment notre liste est supprimée de l'exemple précédent :</p><p>Var maListe = document.getElementById("maListe"), conteneur = document.getElementById("c"); container.removeChild(maListe);</p><p>L'élément a maintenant été supprimé. La méthode removeChild() renvoie l'élément supprimé et je peux le stocker au cas où j'en aurais besoin plus tard.</p><p>Var myOldChild = document.body.removeChild(myList); document.body.appendChild(myOldChild);</p><p>Il existe également la méthode ChildNode.remove(), ajoutée relativement récemment à la spécification :</p><p>Var maListe = document.getElementById("maListe"); maListe.remove();</p><p>Cette méthode ne renvoie pas d'objet distant et ne fonctionne pas dans IE (Edge uniquement). Et les deux méthodes suppriment les nœuds de texte de la même manière que les nœuds d'élément.</p> <h2>Remplacement des éléments enfants</h2> <p>Je peux remplacer un enfant existant par un nouveau, qu'il existe ou non <a href="https://sushiandbox.ru/fr/skype/html5-novye-vozmozhnosti-chto-novogo-v-html5-novye-strukturnye-elementy.html">nouvel élément</a> ou je l'ai créé à partir de zéro. Voici le balisage :</p><p> <p id="par">exemple de texte</p> </p><p>Var myPar = document.getElementById("par"), myDiv = document.createElement("div"); myDiv.className = "exemple" ; myDiv.appendChild(document.createTextNode("Texte du nouvel élément")); document.body.replaceChild(myDiv, myPar);</p><p> <div class="example">Nouveau texte d'élément</div> </p><p>Comme vous pouvez le voir, la méthode replaceChild() prend deux arguments : le nouvel élément et l'ancien élément qu'il remplace.</p> <p>Je peux également utiliser cette méthode pour déplacer un élément existant. Jetez un oeil au HTML suivant :</p><p> <p id="par1">exemple de texte 1</p> <p id="par2">exemple de texte 2</p> <p id="par3">exemple de texte 3</p> </p><p>Je peux remplacer le troisième paragraphe par le premier paragraphe avec le code suivant :</p><p>Var monPar1 = document.getElementById("par1"), monPar3 = document.getElementById("par3"); document.body.replaceChild(myPar1, myPar3);</p><p>Maintenant, le DOM généré ressemble à ceci :</p><p> <p id="par2">exemple de texte 2</p> <p id="par1">exemple de texte 1</p> </p><h2>Sélection d'éléments enfants spécifiques</h2> <p>Il y a plusieurs <a href="https://sushiandbox.ru/fr/master-pc/prostaya-programma-dlya-kodirovaniya-papok-na-fleshke-kak-postavit-parol-na.html">différentes façons</a> sélection d'un élément particulier. Comme indiqué précédemment, je peux commencer par utiliser la collection children ou la propriété childNodes. Mais regardons d'autres options :</p> <p>Les propriétés firstElementChild et lastElementChild font exactement ce que vous attendez de leur nom : sélectionnez le premier et le dernier élément enfant. Revenons à notre balisage :</p><p> <body> <ul id="myList"> <li>Exemple un</li> <li>exemple deux</li> <li>exemple trois</li> <li>exemple quatre</li> <li>exemple cinq</li> <li>Exemple 6</li> </ul> </body> </p><p>Je peux sélectionner les premier et dernier éléments avec ces propriétés :</p><p>Var maListe = document.getElementById("maListe"); console.log(myList.firstElementChild.innerHTML); // "Exemple un" console.log(myList.lastElementChild.innerHTML); // "Exemple 6"</p><p>Je peux également utiliser les propriétés previousElementSibling et nextElementSibling si je veux sélectionner des éléments enfants autres que le premier ou le dernier. Cela se fait en combinant les propriétés firstElementChild et lastElementChild :</p><p>Var maListe = document.getElementById("maListe"); console.log(myList.firstElementChild.nextElementSibling.innerHTML); // "Exemple deux" console.log(myList.lastElementChild.previousElementSibling.innerHTML); // "Exemple cinq"</p><p>Il existe également des propriétés similaires firstChild , lastChild , previousSibling et nextSibling , mais elles prennent en compte tous les types de nœuds, pas seulement les éléments. En règle générale, les propriétés qui ne considèrent que les nœuds d'élément sont plus utiles que celles qui sélectionnent tous les nœuds.</p> <h2>Insertion de contenu dans le DOM</h2> <p>J'ai déjà examiné les moyens d'insérer des éléments dans le DOM. Passons à un sujet similaire et examinons les nouvelles fonctionnalités d'insertion de contenu.</p> <p>Tout d'abord, il existe une simple méthode insertBefore() qui ressemble beaucoup à replaceChild() , prend deux arguments et fonctionne sur les nouveaux éléments ainsi que sur ceux existants. Voici le balisage :</p><p> <div id="c"> <ul id="myList"> <li>Exemple un</li> <li>exemple deux</li> <li>exemple trois</li> <li>exemple quatre</li> <li>exemple cinq</li> <li>Exemple 6</li> </ul> <p id="par">Exemple de paragraphe</p> </div> </p><p>Remarquez le paragraphe, je vais d'abord le supprimer puis l'insérer avant la liste, le tout d'un seul coup :</p><p>Var myList = document.getElementById("myList"), container = document.getElementBy("c"), myPar = document.getElementById("par"); conteneur.insertBefore(myPar, myList);</p><p>Dans le reçu <a href="https://sushiandbox.ru/fr/master-pc/html-kod-krasnaya-stroka-kogda-vsem-abzacam-kak-mne-dlya-kazhdogo-abzaca.html">Paragraphe HTML</a> viendra avant la liste et est une autre façon de déplacer l'élément.</p><p> <div id="c"> <p id="par">Exemple de paragraphe</p> <ul id="myList"> <li>Exemple un</li> <li>exemple deux</li> <li>exemple trois</li> <li>exemple quatre</li> <li>exemple cinq</li> <li>Exemple 6</li> </ul> </div> </p><p>Comme replaceChild() , insertBefore() prend deux arguments : l'élément à ajouter et l'élément devant lequel on veut l'insérer.</p> <p>Cette méthode est simple. Essayons maintenant une méthode d'insertion plus puissante : la méthode insertAdjacentHTML().</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> <span style="display:none" class="updated">2016-05-11</span> <div class="clear"></div> </div> </article> <div class="post-navigation"> <div class="post-previous"> <a href="https://sushiandbox.ru/fr/lessons-on-windows/kak-uvelichit-bystro-bitkoiny-na-metro-hvatit-kak-zarabatyvat-bitkoiny.html" rel="prev"><span>Précédent</span> Assez pour le métro : comment gagner des Bitcoins sans investissements</a> <!-- /next_post --></div> <div class="post-next"> <a href="https://sushiandbox.ru/fr/earnings/kak-zarabotat-pervyi-bitkoin-bez-vlozhenii-kak-zarabotat-bitkoiny-bez.html" rel="next"><span>Prochain</span> Comment gagner des bitcoins sans investissement</a> <!-- /next_post --></div> </div> <section id="related_posts"> <div class="block-head"> <h3>Messages similaires</h3> <div class="stripe-line"></div> </div> <div class="post-listing"> <div class="related-item"> <div class="post-thumbnail"> <a href="https://sushiandbox.ru/fr/10-rules/zarabotat-s-pomoshchyu-vkontakte-kak-zarabotat-dengi-v.html"> <img width="310" height="165" src="/uploads/5aec3a886c579800d2d3c3a29c73a327.jpg" class="attachment-tie-medium wp-post-image" alt="Comment gagner de l'argent au contact" / loading=lazy loading=lazy> <span class="fa overlay-icon"></span> </a> </div> <h3><a href="https://sushiandbox.ru/fr/10-rules/zarabotat-s-pomoshchyu-vkontakte-kak-zarabotat-dengi-v.html" rel="bookmark">Comment gagner de l'argent au contact</a></h3> <p class="post-meta"><span class="tie-date"><i class="fa fa-clock-o"></i> 2022-06-18 03:02:26</span></p> </div> <div class="related-item"> <div class="post-thumbnail"> <a href="https://sushiandbox.ru/fr/10-rules/ne-rabotayut-naushniki-xiaomi-ne-propadaet-znachok-naushnikov-posle-ih-otklyucheniya.html"> <img width="310" height="165" src="/uploads/dedd7371033870832179f1024d9de189.jpg" class="attachment-tie-medium wp-post-image" alt="L'icône du casque ne disparaît pas après l'avoir éteint" / loading=lazy loading=lazy> <span class="fa overlay-icon"></span> </a> </div> <h3><a href="https://sushiandbox.ru/fr/10-rules/ne-rabotayut-naushniki-xiaomi-ne-propadaet-znachok-naushnikov-posle-ih-otklyucheniya.html" rel="bookmark">L'icône du casque ne disparaît pas après l'avoir éteint</a></h3> <p class="post-meta"><span class="tie-date"><i class="fa fa-clock-o"></i> 2022-05-22 04:39:35</span></p> </div> <div class="related-item"> <div class="post-thumbnail"> <a href="https://sushiandbox.ru/fr/internet/obzor-mi-band-pulse-1s-i-sravnenie-s-originalnym-mi-band-vklyuchenie-fitnes.html"> <img width="310" height="165" src="/uploads/75188fae795b99a3b48a1c369fc82b6f.jpg" class="attachment-tie-medium wp-post-image" alt="Allumer le bracelet de fitness Xiaomi Mi Band et configurer Mi Fit Mi band 1s pour la course" / loading=lazy loading=lazy> <span class="fa overlay-icon"></span> </a> </div> <h3><a href="https://sushiandbox.ru/fr/internet/obzor-mi-band-pulse-1s-i-sravnenie-s-originalnym-mi-band-vklyuchenie-fitnes.html" rel="bookmark">Allumer le bracelet de fitness Xiaomi Mi Band et configurer Mi Fit Mi band 1s pour la course</a></h3> <p class="post-meta"><span class="tie-date"><i class="fa fa-clock-o"></i> 2022-05-22 04:39:35</span></p> </div> </div> </section> <script type="text/javascript"> document.getElementById('hc_full_comments').innerHTML = ''; </script> </div> <aside id="sidebar"> <div class="theiaStickySidebar"> </div> </aside> <div class="clear"></div> </div> <div class="e3lan e3lan-bottom"> </div> <footer id="theme-footer"> <div id="footer-widget-area" class="wide-left-3c"> </div> <div class="clear"></div> </footer> <div class="clear"></div> <div class="footer-bottom"> <div class="container"> <div class="alignright"> </div> <div class="social-icons"> <a class="ttip-none" title="Google+" href="" target="_blank"><i class="fa fa-google-plus"></i></a><a class="ttip-none" title="Twitter" href="https://www.twitter.com/share?url=https%3A%2F%2Fsushiandbox.ru%2Ffr%2Fsocial-network%2Fcss-obrashchenie-k-dochernim-elementam-tehniki-raboty-s-dom-roditelskie-dochernie-i.html" target="_blank"><i class="fa fa-twitter"></i></a> <a class="ttip-none" title="vk.com" href="https://vk.com/share.php?url=https://sushiandbox.ru/social-network/css-obrashchenie-k-dochernim-elementam-tehniki-raboty-s-dom-roditelskie-dochernie-i.html" target="_blank"><i class="fa fa-vk"></i></a> </div> <div class="alignleft">© Copyright 2022, Mastering PC - Internet. Skype. Réseaux sociaux. Tutoriels Windows</div> <div class="clear"></div> </div> </div> </div> </div> </div> <div id="topcontrol" class="fa fa-angle-up" title="Faire défiler vers le haut"></div> <div id="fb-root"></div> <div id="reading-position-indicator"></div> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/plugins/CodeCanyon-Arqamv2.0.4-RetinaResponsiveWordPressSocialCounterPlugin-5085289/assets/js/scripts.js'></script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/plugins/ark-hidecommentlinks/js/ark-hidecommentlinks.js'></script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/plugins/ark-hidecommentlinks/js/pcl_tooltip.js'></script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/plugins/ark-hidecommentlinks/js/pcl_tooltip_init.js'></script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js'></script> <script type='text/javascript' src='/assets/scripts1.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var tie = { "mobile_menu_active": "true", "mobile_menu_top": "", "lightbox_all": "true", "lightbox_gallery": "true", "woocommerce_lightbox": "", "lightbox_skin": "dark", "lightbox_thumb": "vertical", "lightbox_arrows": "", "sticky_sidebar": "1", "is_singular": "1", "SmothScroll": "true", "reading_indicator": "true", "lang_no_results": "\u041d\u0435\u0442 \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b", "lang_results_found": "\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u043d\u0430\u0439\u0434\u0435\u043d\u043e" }; /* ]]> */ </script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/themes/sahifa/js/tie-scripts.js'></script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/themes/sahifa/js/ilightbox.packed.js'></script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/themes/sahifa/js/search.js'></script> <script type='text/javascript' src='https://sushiandbox.ru/wp-content/themes/sahifa/js/jquery.cycle.all.js'></script> </body> </html>