IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mise en page CSS Discussion :

[flexbox] Alignement vertical des éléments


Sujet :

Positionnement en CSS avec flexbox

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Noob
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Noob

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [flexbox] Alignement vertical des éléments
    Salut tout le monde,


    Je débarque tout juste dans le monde du développement web, je suis en train de découvrir Flexbox et ses propriétés et je ne sais pas si j'ai loupé ou mal compris quelque chose mais même en relisant le cours plein de fois je n'arrive pas à faire une mise en page qui parait assez simple sur le papier :

    Je vous ai fait un petit schéma avec mes talents de graphiste :

    Nom : oeuvredart.PNG
Affichages : 207
Taille : 6,6 Ko


    mon conteneur est avec la bordure rouge
    J'aimerais que mes deux éléments soient placés comme sur mon schéma mais je n'y arrive pas.

    Avec un display: flex
    Un justify-content : space_between; les positionne bien sur l'axe horizontal ( a savoir l'un tout à gauche et l'un tout à droite, ) mais sur la même ligne, celle du haut.
    j'ai essayé d'ajouter un align_item: flex_end; qui fait le même effet mais sur la ligne du bas
    Un vertical_align: baseline; ou bottom; n'ont aucun effet
    Le flex wrap non plus, puisque les éléments ont largement assez de place... ?
    etc etc, bref, je n'y arrive pas, mais ça doit être possible non ? ou je ne prends pas le problème dans le bon sens ?


    Merci pour votre aide.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    regarde du côté de align-self: flex-start et align-self: flex-end sur les éléments.

    La propriété align-self détermine comment aligner les éléments flexibles sur une même rangée. Elle surcharge la valeur de la propriété align-items.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Noob
    Inscrit en
    Novembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Noob

    Informations forums :
    Inscription : Novembre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    merci cela fonctionne! Est ce la seule manière de faire cela ??

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Sur base d'une « boîte flexible » tu as les deux approches, row ou column, qui sont possibles.

    Prenons la structure HTML suivante :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <h1><code>flex-box-row</code></h1>
    <div class="flex-box-row">
      <div class="item-gauche">Elément #1</div>
      <div class="item-droite">Elément #2</div>
    </div>
    <h1><code>flex-box-column</code></h1>
    <div class="flex-box-column">
      <div class="item-gauche">Elément #1</div>
      <div class="item-droite">Elément #2</div>
    </div>
    appliquons maintenant le CSS ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    [class^="flex-box"] {
      display: flex;
      align-items: flex-start;
      margin: 1em;
      padding: .25em;
      border: 1px solid #F00;
    }
    .flex-box-row {
      flex-direction: row;
      justify-content: space-between;
      min-height: 14em;         /* valeur à ajuster */
    }
    .flex-box-column {
      flex-direction: column;
    }
    .item-gauche {
    /*  align-self: flex-start; /* pas utile */
    }
    .item-droite {
      align-self: flex-end;
    }
    [class^="flex-box"] div {
      padding: 1em;
      min-height: 5em;
      border: 1px solid #00F;
      background-color: #FF0;
    }
    on obtiendra à pouillème près ce que tu nous montres mais il ressort que de passer par une class="flex-box-column" à moins de contrainte, pas de justify-content ni de min-height à déclarer, et sans effets indésirables pouvant apparaître au redimensionnement de la fenêtre.

Discussions similaires

  1. Besoin d'aide avec Regexp::Assemble
    Par mobscene dans le forum Modules
    Réponses: 5
    Dernier message: 11/04/2007, 12h39
  2. [ASA] J'ai besoin d'aide avec sybase et vb6 svp !!
    Par tibo830 dans le forum SQL Anywhere
    Réponses: 7
    Dernier message: 12/05/2006, 10h09
  3. Besoin d'aide avec TinyXML
    Par Clad3 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/08/2005, 18h20
  4. Réponses: 2
    Dernier message: 29/08/2003, 17h52
  5. Besoin d'aide avec postgresql sous windows NT
    Par Chihuahua dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/07/2003, 08h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo