Commentaires

Positionner des éléments



On peut aussi modifier la position des éléments de plusieurs façons, ça peut être pratique pour vraiment adapter un contenu sur mesure.

Arthur, l'apprenti développeurJe ne vois pas vraiment ce que tu veux dire.

Position static


Et bien par défaut, les éléments sont tous positionnés en "static" c'est à dire qu'il suivent normalement le flux de la page.

Arthur, l'apprenti développeurLe flux?!?

Et bien si on écrit un <div> il va se positionner en haut à gauche, le div suivant se positionnera en dessous du premier, alors qu'avec un span qui est un élément inline, ils se positionneront l'un à côté de l'autre. On va toujours du haut vers le bas, et de la gauche vers la droite, c'est le positionnement static.

Arthur, l'apprenti développeurJ'imagine que si tu m'en parles, c'est qu'il en existe d'autres.

Position relative


Tout à fait, on a par exemple la position relative, elle permet de positionner l'élément comme s'il était en static, et de le déplacer par rapport à cette position. Par exemple , je vais positionner la deuxième <div> en relative:



Arthur, l'apprenti développeurBen elle s'affiche normalement, elle n'a pas bougé

Tout à fait, comme je te l'ai dit, la position relative positionne l'élément en static, et ensuite on peut le déplacer, pour le moment je n'ai fait aucun déplacement.

On peut utiliser quatre propriétés pour déplacer un élément relative :

  • top : pour le décaler de x unités par rapport au haut de sa position

  • bottom: pour le décaler de x unités par rapport au bas de sa position

  • left : pour le décaler de x unités par rapport à la gauche de sa position

  • right: pour le décaler de x unités par rapport à la droitede sa position



Par exemple :



Arthur, l'apprenti développeurAh oui il a bougé !

De 20px vers le bas et 20 px vers la droite.

Arthur, l'apprenti développeurMais pourtant, tu as mis top et left donc haut et gauche, pourquoi il a bougé en bas et à droite.

Parce qu'on le déplace par rapport à sa position, donc si on fait top: 20px ça veux dire qu'on ajoute 20px en hauteur par rapport à la position où il se trouve. Par contre si on utilise bottom et right, ça fait le contraire :



Arthur, l'apprenti développeurOk, ok j'ai compris.

Position absolute



On peut aussi positionner un élément en absolute, c'est presque comme relative à une nuance près, en absolute l'élément se positionne en static par rapport à la position de l'élément parent et on peut ensuite le déplacer.

Arthur, l'apprenti développeurRépète un peu ça?

Je te montre un exemple :



et la même chose avec absolute :



Arthur, l'apprenti développeurMais... c'est bizarre c'est le carré bleu et le orange qui bougent. Pourtant ce n'est que le orange que tu as changé.

Effectivement, mais quand on positionne en absolute, on retire l'élément du flux, donc il ne prend plus l'espace qu'il devrait prendre, ce qui fait remonter le troisième carré juste après le deuxième. Et ensuite avec top: 25px on dit au bloc orange de se repérer par rapport au <div> parent, et de se positionner 25p en dessous du haut de celui-ci.

Arthur, l'apprenti développeurOk, je pense avoir compris.

Position fixed



On peut aussi positionner un élément de façon fixe, il sera alors positionné par rapport à la fenêtre, et il restera toujours à cette position, même si l'utilisateur utilise le scroll. En reprenant le même exemple ça donnerait :



Attention tout de même, cette fois, on ne positionne plus par rapport au parent, mais bien à la fenêtre, donc sans déplacement, l'élément sera tout en haut à gauche de ton navigateur, peu importe les parents.

Position sticky



Et il reste une dernière façon de positionner un élément, avec la position sticky. C'est un mélange entre le fixed et le relative. L'élément garde sa position d'origine dans ses parents, on peut le déplacer avec les même propriétés que d'habitude, mais qui s'appliqueront par rapport à la position de la fenêtre, et il restera à cette position si on scroll.

Arthur, l'apprenti développeurHoula, tu m'as encore perdu !



Arthur, l'apprenti développeurOk je comprend mieux avec l'exemple.

On a finit pour les positions, passons à la suite ! J'ai terminé cette partie
Demander de l'assistance