Les pseudo-classes :nth-child()
et :nth-of-type()
dans CSS sont utilisées pour sélectionner des éléments en fonction de leur position dans un conteneur parent. Voici un aperçu détaillé de l'utilisation de chacun:
Utilisation: NTH-Child ()
La pseudo-classe :nth-child()
sélectionne des éléments en fonction de leur position parmi tous les frères et sœurs au sein du même parent, quel que soit leur type. La syntaxe est:
<code class="css">:nth-child(an b)</code>
Où a
et b
sont des entiers, et n
est un compteur à partir de 0. Les modèles communs comprennent:
:nth-child(2)
: sélectionne le deuxième élément enfant.
<li> :nth-child(odd)
: Sélectionne tous les éléments de l'enfant à nuages impairs.
<li> :nth-child(even)
: sélectionne tous les éléments enfants uniformes.
<li> :nth-child(3n)
: sélectionne chaque troisième élément enfant (3, 6, 9, etc.).
<li> :nth-child(3n 1)
: Sélectionne chaque troisième élément enfant à partir du premier (1, 4, 7, etc.).
Exemple d'utilisation:
<code class="html"><ul> <li>First item</li> <li>Second item</li> <li>Third item</li> <li>Fourth item</li> </ul></code>
<code class="css">li:nth-child(2) { background-color: yellow; }</code>
Cela appliquerait un fond jaune au deuxième élément <li>
.
Utilisation: n ° de type ()
La pseudo-classe :nth-of-type()
est similaire, mais il sélectionne uniquement des éléments en fonction de leur position parmi les frères et sœurs du même type. La syntaxe est identique à :nth-child()
:
<code class="css">:nth-of-type(an b)</code>
Exemple d'utilisation:
<code class="html"><ul> <li>First item</li> <p>Some text</p> <li>Second item</li> <p>More text</p> </ul></code>
<code class="css">li:nth-of-type(2) { background-color: yellow; }</code>
Cela appliquerait un fond jaune au deuxième élément <li>
, mais n'affecterait pas les éléments <p></p>
.
Les principales différences entre :nth-child()
et :nth-of-type()
sont:
Considération de type d'élément:
:nth-child()
compte tous les éléments enfants quel que soit leur type. Il considère la position de l'élément parmi tous les frères et sœurs.
<li> :nth-of-type()
ne compte que les frères et sœurs du même type d'élément. Il est plus spécifique dans sa sélection.
Précision du sélecteur:
:nth-child()
est moins précis si vous ciblez un type d'élément spécifique car il compte tous les éléments.
<li> :nth-of-type()
vous permet de cibler les éléments plus précisément par type, ce qui peut être plus efficace dans certains scénarios.
Scénarios d'utilisation:
:nth-child()
Lorsque vous devez sélectionner des éléments en fonction de leur position parmi tous les frères et sœurs, quel que soit le type.
<li> Utilisation :nth-of-type()
lorsque vous souhaitez sélectionner des éléments en fonction de leur position parmi les frères et sœurs du même type.
Utilisation: Nth-Child () Exemple:
Supposons que vous ayez une disposition de grille de différents types d'éléments, et que vous souhaitez styliser chaque troisième élément quel que soit le type d'élément:
<code class="html"><div class="grid"> <div>Item 1</div> <p>Item 2</p> <span>Item 3</span> <div>Item 4</div> <p>Item 5</p> <span>Item 6</span> </div></code>
<code class="css">.grid :nth-child(3n) { background-color: lightblue; }</code>
Dans ce cas,: :nth-child(3n)
sera stylisé chaque troisième élément (article 3 et article 6) quel que soit leur type d'élément.
Utilisation: nth de type () Exemple:
Si vous souhaitez styliser chaque seconde <div> dans la même mise en page de la grille:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> <code class="html"><div class="grid"> <div>Item 1</div> <p>Item 2</p> <span>Item 3</span> <div>Item 4</div> <p>Item 5</p> <span>Item 6</span> <div>Item 7</div> </div></code></pre><div class="contentsignin">Copier après la connexion</div></div>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> <code class="css">.grid div:nth-of-type(2n) { background-color: lightgreen; }</code></pre><div class="contentsignin">Copier après la connexion</div></div>
<p> Dans cet exemple,: <code>:nth-of-type(2n)
sera stylisé chaque seconde <div> (élément 4 et élément 7).<h3> Comment puis-je optimiser mes sélecteurs CSS en utilisant: Nth-Child () et: Nth of-Type () pour de meilleures performances?</h3>
<p> Pour optimiser les sélecteurs CSS en utilisant <code>:nth-child()
et :nth-of-type()
pour de meilleures performances, considérez les stratégies suivantes:
Spécificité et efficacité du sélecteur:
:nth-of-type()
au lieu de :nth-child()
lorsque vous avez spécifiquement besoin de cibler les éléments d'un type particulier. Cela peut être plus efficace car le navigateur n'a pas besoin de traiter des éléments non liés.
<li> Gardez vos sélecteurs aussi spécifiques que nécessaire, mais aussi général que possible pour réduire les frais généraux de correspondance.
Minimiser la traversée DOM:
Combinaison :nth-child()
ou :nth-of-type()
avec des sélecteurs de classe peut aider à réduire la traversée DOM requise. Par exemple:
<code class="css">.list-item:nth-child(2) { /* Style properties */ }</code>
Cela cible le deuxième enfant avec la classe .list-item
, qui peut être plus efficace que la recherche de tous les enfants.
Évitez la nidification profonde:
Les sélecteurs profondément imbriqués peuvent ralentir les performances. Utilisation :nth-child()
ou :nth-of-type()
peut aider à éviter la nécessité de sélecteurs trop spécifiques. Par exemple:
<code class="css">ul li:nth-child(2) { /* Instead of */ /* ul > li > ul > li:nth-child(2) */</code>
Limiter la complexité du sélecteur:
:nth-child(2)
est susceptible de mieux fonctionner qu'une combinaison complexe de sélecteurs de pseudo-classes et d'attributs.Utilisez des préprocesseurs CSS:
En mettant en œuvre ces stratégies, vous pouvez vous assurer que votre utilisation de :nth-child()
et :nth-of-type()
est optimisée pour les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!