Переглянути джерело

Ajout point 3.4 sur classList

Benoît Hubert 7 роки тому
батько
коміт
ac6fc788c4

+ 43 - 0
react-tuto/src/markdown/3. Styles et classes/04. Classes - suite.md

@@ -0,0 +1,43 @@
+Manipuler les classes avec `className` serait bien peu pratique ! Prends
+l'élément suivant :
+
+```html
+<button id="btn1" class="btn btn-primary active">Bouton actif</button>
+```
+On pourrait avoir les styles suivants dans l'en-tête HTML :
+```html
+<style>
+.btn { padding: 10px; border-radius: 3px; }
+.btn-primary { background: #aaf; border: 1px solid #aaf; }
+.btn-secondary { background: #aff; border: 1px solid #aff; }
+.active { font-weight: bold; }
+</style>
+```
+
+Comment faire si je veux enlever `active`, ou remplacer `btn-primary` par `btn-secondary` ?
+Cela m'oblige à faire des manipulations potentiellement complexes sur la chaîne assignée à
+`className`.
+
+<blockquote>
+La propriété <code>classList</code> contient non pas une chaîne, mais une <em>liste</em> des classes.
+Ce n'est pas un simple tableau, mais un objet renfermant un tableau, et qui offre les méthodes :
+<ul>
+  <li><code>add</code> : <em>ajouter</em> une classe</li>
+  <li><code>remove</code> : <em>supprimer</em> une classe</li>
+  <li><code>toggle</code> : <em>changer</em> l'existence d'une classe</li>
+  <li><code>contains</code> : <em>vérifier</em> l'existence d'une classe</li>
+</ul>
+Quand on manipule <code>className</code>, <code>classList</code> est mise à jour automatiquement, et vice-versa.
+</blockquote>
+
+Exemple avec le bouton ci-dessus (regarde le résultat avant et après que tu aies inséré le code ci-dessous) :
+```javascript
+var button = document.getElementById('btn1');
+button.classList.remove('btn-primary');
+button.classList.add('btn-secondary');
+button.classList.toggle('active');
+if(! button.classList.contains('active')) {
+  button.innerHTML = 'Bouton inactif';
+}
+console.dir(button);
+```