Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Derniers sujets
Probleme avec un code Dim 13 Oct - 21:05Jawn
Problème/Question CodeDim 13 Oct - 21:04Jawn
• THE LAST CUREDMer 9 Oct - 0:35Invité
• LOOM OF FATESLun 7 Oct - 16:09Invité
• AINSI TOMBA THEDASDim 6 Oct - 21:01Invité
• HIGHWAY TO THE STARSSam 5 Oct - 21:45Jawn
• CROWN OF SERPENTSMar 1 Oct - 20:05Invité
DEMANDES DE PARTENARIATLun 30 Sep - 21:30Jawn
• JUST MARRIEDLun 23 Sep - 0:00Jawn
• [+18] AMARYLLISMar 10 Sep - 23:18Jawn
• [+16] LA CALICES DES DIEUXSam 7 Sep - 22:18Jawn
• ERAXARTHJeu 5 Sep - 18:58Invité
• [+16] BEYOND THE VEILLun 2 Sep - 22:23Jawn
• ANAMORPHOSEDim 1 Sep - 23:12Jawn
• 30 YEARS STILL YOUNGJeu 29 Aoû - 20:35Jawn
• HELIANTHUSMer 28 Aoû - 13:08Jawn
• BASIQUEMar 27 Aoû - 13:56Jawn
• BLACK HOLE SUNLun 26 Aoû - 21:20Jawn
• A DROP IN THE OCEANLun 26 Aoû - 0:02Jawn
-26%
Le deal à ne pas rater :
369€ PC Portable HP 15-fd0064nf – 15,6″ FHD 8 Go / 256 Go + ...
369.99 € 497.99 €
Voir le deal

Jawn
she/her mais n'importe quel pronom fera l'affaire - codeuse - accro à Genshin Impact - vive les fleurs et la nature - créditez les codes
Jawn
she/her mais n'importe quel pronom fera l'affaire - codeuse - accro à Genshin Impact - vive les fleurs et la nature - créditez les codes
74427/01/2018
Au commencement...


Bonjour ou bonsoir à vous, amis.ies codeurs.ses. Aujourd’hui, nous allons nous concentrer sur un petit truc magique qui s’appelle le “display:flex”. Pour ceux qui ne connaissent pas, c’est ce qui permet d’aligner deux ou plusieurs éléments sur une petite ligne, sans être obligé d’avoir recours au “position:absolute” ou même au “display:inline-block”. Parce que le dernier, on le connaît, on l’utilise tous beaucoup et même s’il est pratique dans la plupart des cas, il demande néanmoins d’être accompagné d’un “vertical-align” pour que tout soit bien aligné. Cependant, ça ne permet pas de centrer plusieurs éléments que l’on a alignés.

Par ailleurs, vouloir aligner est un souci lorsque l'on sait que la balise "center" est obsolète. Elle fonctionne, vous pouvez toujours l'utiliser; mais en préférera un "margin:0 auto" par exemple, pour que tout soit le plus optimal possible.

Pour correctement montrer la différence entre un “display:flex” et un “display:inline-block”, on va rendre les choses bien plus visuelles pour que ce soit clair.

Le Display:inline-block


Nous allons partir du principe qu’il y a deux blocs à aligner. Comme dit plus haut, c’est une variable que l’on va implanter à chaque bloc pour qu’il soit l’un à côté de l’autre. À noter que le HTML fonctionne ainsi : si on ne donne pas de position à un élément, il se mettra de base en haut à gauche, puis en bas, puis en bas, puis en bas, etc. En gros, tout se met l’un à la suite de l’autre dans le sens de la verticale. Mais ce que nous voulons aujourd’hui, c’est tout aligner dans le sens de l’horizontal sans devoir trop bidouiller. Le "display:inline-block" est donc ce que l’on utilise de base.



Code:
.un {
  width: 200px;
  height: 200px;
  background: red;
  display: inline-block;
}
.deux {
  width: 200px;
  height: 200px;
  background: lightblue;
  display: inline-block;
}

Nos deux blocs sont bien alignés l’un à côté de l’autre, mais pas centrés et dans un code type page d'accueil, c’est plutôt embêtant. Exemple, lorsqu’un bloc n’est pas à la même taille que l’autre, alors le bloc le plus petit se mettra au niveau du bas de l’autre.



Code:
.undd{width: 150px;
  height: 150px;
  background:red;
  display: inline-block;
}
.deuxdd{
  width: 100px;
  height: 100px;
  background: lightblue;
  display: inline-block;
}

Là encore, ça n’est pas pratique et pour que tout soit correct, il faut alors rajouter un “vertical-align:top”, ce qui dit en gros au code “ok t’es l’un à côté de l’autre, mais mets toi en haut comme tout bon HTML qui se respecte stp”.



Code:
.und{
  width: 150px;
  height: 150px;
  background: red;
  display: inline-block;
}
.deuxd{
  width: 100px;
  height: 100px;
  background: lightblue;
  display: inline-block;
  vertical-align:top;
}

Mais comme vous pouvez le voir, ça ne règle pas notre souci; les blocs ne sont pas centrés. Et c’est donc là qu’apparaît un outil magique.

Le Display:flex


Ici, nous allons commencer par le visuel que nous allons décortiquer pour l’expliquer.

shrtfxg
cghftg
coucou


Code:
.pa {
  width: 400px;
  background: grey;
  height: 200px;
  margin: 0 auto; /*on centre le conteneur*/
  padding: 5px; /*le padding ne sert qu'à correctement montrer le cadre gris de fond*/
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between; /*cette valeur permet de mettre au centre mais y'en a plein de dispo*/
}
.trois {
  background: lightgrey;
  width: 200px;
  height: 100px;
  padding: 10px;
  color: black;
  font-family: calibri;
  font-size: 20px;
}
.quatre {
  background: purple;
  width: 180px;
}
.cinq {
  width: 400px;
  background: pink;
}

Tout d’abord, on créé un conteneur général, ici appelé “.pa” (parce qu’en prenant l’exemple visuel d’une page d'accueil vous voyez de quoi je parle /PAN)

Sur notre conteneur, on applique le “display-flex”, ce qui dit au code : “tout ce qui se trouve dans ce bloc va s’aligner jusqu’à ce qu’on décide que ça soit plus le cas”.

Comme vous pouvez le voir, ça s’accompagne d’un “flex-wrap:wrap”. Ça dit “tu t'alignes mais tu dépasses de la width définie”, ce qui fait que tout ce qui dépassera se verra revenir à la ligne automatiquement. Sur l’exemple, le dernier bloc qui est trop grand pour s’aligner avec les deux premiers se retrouve donc automatiquement placé à la suite, mais en bas.

Et voilà, c’est tout. Grâce à ça, tous les blocs à l’intérieur d’un conteneur vont s’aligner sans que vous soyez obligé de les placer un par un et à la main, il n’y a plus qu’à appliquer divers “margin” et “padding” afin de rendre le tout un peu plus regardable. L’avantage, c’est que ça vous éviter d’appliquer un “display:inline-block” et un “vertical-align:top” à chaque bloc que vous voulez aligner et donc, ça vous fait gagner pas mal de place dans votre CSS. Parce que oui, on le rappelle, mais le CSS de Forumactif n’est pas infini et s’arrête aux alentours d’un peu plus de 3000 lignes de code.

(Croyez-moi, j’ai déjà atteint cette limite et vous avez pas envie de vous aussi voir vos premières lignes disparaître quand vous en rajoutez en trop)

Dernière petite chose, vous voyez que dans le code, se trouve un “justify-content: space-between”. Ça permet d’aligner les blocs tout en laissant un espace entre eux. En gros, le bloc de gauche restera collé à gauche, le bloc de droite restera collé à droite, quelle que soit la taille que vous avez décidé de leur donner. Exemple :

shrtfxg
cghftg
coucou


Code:
.pap {
  width: 400px;
  background: grey;
  height: 200px;
  margin: 0 auto;
  padding: 5px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.troisp {
  background: lightgrey;
  width: 200px;
  height: 100px;
  padding: 10px;
  color: black;
  font-family: calibri;
  font-size: 20px;
}
.quatrep {
  background: purple;
  width: 150px;
}
.cinqp {
  width: 400px;
  background: pink;
}

Les variables de justify-content


Okay, là on pousse un peu le bouchon mais croyez-moi, toucher à cette petite variable peut faire des miracles. Il existe donc pleins de “justify-content”, mais on va se concentrer sur les plus courants. Et sans exemple visuel sinon ce post va devenir beaucoup trop long et c’est déjà beaucoup trop long.

justify-content: center > Centre les blocs à l'intérieur du conteneur

justify-content: flex-start > Aligne les blocs tout à gauche

justify-content: flex-end > Aligne les blocs tout à droite

justify-content: space-between > Comme on l'a vu, ça permet de coller le bloc de gauche à gauche, et celui de droite à droite sans prendre en compte les largeurs données

justify-content: space-around > Aligne les blocs de façon homogène, ils sont centrés mais auront le même margin à gauche et droite

justify-content: space-evenly > Aligne les blocs de façon homogène mais garde le bloc de gauche à gauche et celui de droite à droite

Voilà ! Vous avez maintenant toutes les clefs en mains pour gagner un peu de place dans votre CSS et pour aligner correctement des blocs sans devoir vous prendre la tête pendant des heures. Maintenant, il ne vous reste plus qu’à vous amuser à bidouiller les variables histoire de voir ce que ça peut donner ~
Le display flex est ton ami. Empty # Le display flex est ton ami. - Sam 20 Juil - 21:34
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
© epsilon - 2024
créateurice de code depuis 2018
© jawn