Correction du DS
Réponses
Question A
b,c : parent
e : parent = parent.parentElement;
Question B
function run(n, selector) {
if (n.matches(selector)) {tab.push(n);}
for (let childElt of n.children) {
run(childElt, selector);
}}
Question C
Vidéo et commentaire
Projet
Nous allons mettre en place un tableau dynamique !
Ce dernier projet regroupe l'ensemble de nos connaissances sur le DOM.
En particulier, nous verrons l'ajout
- de nouveaux éléments
- d'attributs
- de classes
- d'évènements
La force de notre code est de prendre un code HTML vierge de tout marqueur de classe.
C'est le JS qui met en place les fonctionnalités de l'application.
Vidéo commentée
Le code
Voici les code en détail : lien
Aide au DS : un grand classique
Mise en place un menu dynamique.
Entrainez vous à écrire le code JS
Amélioration 1
Amélioration 2
- .menu li ul {
- display : none;
- }
Amélioration 3
Amélioration 4
Aide aux revisions
Révisions
La partie Grid ne sera pas au DS.
Les partie DOM avec les événements et parcours sont à cibler.
Aides
Structure du DOM
Voici pour commencer trois vidéos reprenant le parcours dans l'arbre vidéos
le code de la vidéo : code et une amélioration : code
Vous pourrez finalement testez vos connaissances ( lien )
DOM
Voici une série de question sur le vocabulaire du DOM (lien)
Retrouvez le programme des cours lien
Semaine du 16 au 20
Cours
La délégation
En action
Code en action
https://codepen.io/dupontcodepen/pen/GRqYRro
https://codepen.io/dupontcodepen/pen/gOMqwjL
TD
Introduire la délégation dans le code https://codepen.io/dupontcodepen/pen/mdExbWm
pour pouvoir avoir plusieurs couples énoncés/solutions.
Remarques :
https://codepen.io/dupontcodepen/pen/eYzxdeL
Semaine du 9 au 13
Cours : les événements
https://dupontl2.blogspot.com/2020/11/event-video.html
TD
https://dupontl2.blogspot.com/2020/11/td-semaine-du-9-au-15.html
DM
https://dupontl2.blogspot.com/2020/11/dm-image.html
En savoir plus
https://dupontl2.blogspot.com/2020/11/allez-plus-loin.html
Allez plus loin
Voici le code pour remplacer les images par des vidéos.
code : Mes vidéos
DM : image
Remarque
En action
En savoir plus
TD : semaine du 9 au 15
Découvrir le DOM ( lien )
Nous corrigerons les TD DOM ( lien )
ex 1 : https://youtu.be/8n8ohTjbbY4?t=192ex 2 : https://youtu.be/8n8ohTjbbY4?t=654
ex 3 : https://youtu.be/8n8ohTjbbY4?t=900
ex 4 : https://youtu.be/8n8ohTjbbY4?t=1624
ex 5 : https://youtu.be/6aD4VSUMoEg?t=1
ex 6 : https://youtu.be/6aD4VSUMoEg?t=356
ex 7 : https://youtu.be/6aD4VSUMoEg?t=661
En pratique
N.B.
Juste pour information, dans le TD5, j'évoque une fonction pour générer une couleur aléatoire :
Voici un code possible:
'#'+'0123456789abcdef'.split('').map(function(v,i,a){ return i>5 ? null : a[Math.floor(Math.random()*16)] }).join('');
Pour comprendre ce code ( lien )
Et comme un code n'est jamais unique, voici une autre version En action : lien
Semaine du 2 au 9
Pas de cours nouveau cette semaine.
Je viens de vous rédiger une longue correction du projet avec des problèmes intéressants. lien
JS splice en action
Etude de splice
splice retire ou ajoute des éléments d'un tableau.
Son utilisation est fort utile.
En action
- let e = [2,3,4],
- t = [0,2,2,6,1,3];
- function notIn(array1,array2) {
- for (let i=0 ; i < array1.length; i++) {
- for (let j=0 ; j < array2.length; j++) {
- if ( array1[i] == array2[j]){
- array2.splice(j--, 1);
- }
- }
- }
- }
- notIn(e,t);
- console.log(t);
Cas des ensembles
- function difference (setA, setB) {
- let dif = new Set(setA);
- for (let elem of setB) {
- dif.delete(elem);
- }
- return dif;
- }
Projet DOM
Ecrire le code pour parcourir l'ensemble des éléments d'une page.
En action :
Injecter le code dans la console d'une page HTML prise au hasard.
Rappels
Élément
Node
Parcours du DOM
HTML
<body>
article{article $}>section{section $}*2>p{para $}*3(puis Tab)
</body>
JS
fonctions utiles : console.groupCollapsed(); console.groupEnd();
on utilise children pour avoir les enfants d'un nœud élément.
on utilise for of pour réaliser une boucle
printDomEle(document.body);
Défi pour ce WE
Soit le HTML
<div class="conteneur" style="width: 400px; height: 400px;">
<div id="it1">A</div>
<div id="it2">B</div>
<div id="it3">C</div>
<div id="it4">D</div>
</div>
<div class="conteneur" style="width: 400px; height: 400px;">
<div id="it1">A</div>
<div id="it2">B</div>
<div id="it3">C</div>
<div id="it4">D</div>
</div>
Imaginer le résultat du CSS suivant
.conteneur {
display: grid;
grid-template-columns: repeat(2, 100px);
}
#it4 {
grid-column-end : 1
}
.conteneur {
display: grid;
grid-template-columns: repeat(2, 100px);
}
#it4 {
grid-column-end : 1
}
Imaginer le résultat du CSS suivant
.wrapper {
display: grid;
grid-template-columns: repeat(4, 1cm);
grid-auto-rows: 1cm;
grid-gap: 0.1cm;
grid-auto-flow: row;
}
div:nth-child(1) { grid-column: 3 / 5; grid-row: 2 / 5; } | div:nth-child(2) { grid-column: 1 / 3; grid-row: 1 / 3; } | div:nth-child(3) { grid-row-end: span 1; } | div:nth-child(4) { grid-column-end: span 2; } |
Dessiner le résultat du placement des ces quatre div dans le wrapper
Simulateurs
Vous pouvez utiliser le simulateur Grid à tout moment ( ici )
Cours : Grid distanciel !
Nous avons conçu avec Mozilla un cours spécialement pour le distanciel. Il est fait pour vous. ( cours en D.)
Distanciel
Comment allons nous gérer le cours ?
Pour ne pas créer de complications supplémentaires, voici comment je vais organiser les deux prochains cours du vendredi 11 et 18 septembre.
Vendredi 11/09 :
Présentiel : Après une courte introduction, nous introduirons Grid ! Une révolution CSS.
Distanciel : liens sur des Vidéos sur Grid à voir dans la semaine !
Vendredi 18/09 :
Présentiel : Après une courte introduction, nous introduirons Grid ! Une révolution CSS.
Distanciel : liens sur des Vidéos sur Grid à voir dans la semaine !