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 et overflow


Sujet :

Positionnement en CSS avec flexbox

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut Flexbox et overflow
    Bonjour,

    J'emploie depuis peu Flexbox et mon problème est peut-être très bête mais je bute dessus depuis hier sans avoir trouvé de solution sur le web.

    J'ai recréé une version simplifiée de mon problème pour l'aborder ici :
    - Un "container" autorisant le dépassement avec une barre pour scroller horizontalement
    - Deux lignes "Flexbox" dans le container n'autorisant pas la mise à la ligne du contenu en fonction de la taille de l'écran
    - Des blocs de largeur minimale et extensible dans chacune des lignes

    En plein écran pas de problème. Mais quand on commence à redimensionner la fenêtre pour arriver en dessous de la taille minimale de l'ensemble des blocs, la barre pour scroller horizontalement apparait... en même temps que mon problème.
    Comme vous pouvez le voir, lorsque l'on scroll horizontalement, ce qui me gène c'est que la couleur de fond de chaque ligne (bleu et orange) s'arrête au niveau de l'affichage de l'écran alors que j'aimerais que la couleur de fond soit appliquée à l'ensemble de la ligne.

    Plein écran : Normal
    Nom : Plein Ecran.png
Affichages : 844
Taille : 9,1 Ko

    Scroll - Partie gauche : Normal
    Nom : Gauche.png
Affichages : 849
Taille : 7,4 Ko

    Scroll - Partie droite : Pas ce que je veux
    Nom : Droit.png
Affichages : 847
Taille : 7,7 Ko

    Si je rajoute une largeur fixe (width: ...px) sur chacune des lignes alors la couleur de fond prend bien toute la ligne... Mais ce n'est évidemment pas la bonne solution étant donné que je ne peux pas prévoir la largeur de mes blocs en fonction de l'affichage de l'écran.

    Merci d'avance à ceux qui pourraient me donner un coup de main.

    Voici la version simplifiée du code:
    HTML
    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
    <div class="ensemble">
      <div class='ligne1'>;
        <div class="block">11</div>
        <div class="block">99</div>
        <div class="block">99</div>
        <div class="block">99</div>
        <div class="block">99</div>
        <div class="block">99</div>
        <div class="block">99</div>
        <div class="block">22</div>
      </div>
     
      <div class='ligne2'>;
        <div class="block">AA</div>
        <div class="block">BB</div>
        <div class="block">BB</div>
        <div class="block">BB</div>
        <div class="block">BB</div>
        <div class="block">BB</div>
        <div class="block">BB</div>
        <div class="block">CC</div>
      </div>
    </div>
    CSS
    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
    .ensemble {
      overflow-x:auto;
      background:green;
      border: 3px red dashed;
    }
     
    .ligne1 {
      display:flex;
      background:cyan;
    }
     
    .ligne2 {
      display:flex;
      background:orange;
    }
     
    .block {
      flex-grow:1;
      flex-shrink:0;
      width:100px;
      height:100px;
      border: 1px red dashed;
    }
    Images attachées Images attachées     

  2. #2
    Membre éprouvé
    Homme Profil pro
    Intégrateur Web
    Inscrit en
    Juillet 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Juillet 2016
    Messages : 65
    Par défaut
    Pour régler le problème de ton exemple tu peux simplement faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .ligne1 .block{background:cyan;}
    .ligne2 .block{background:orange;}
    Après suivant ton "vrai" code je ne sais pas si cela fonctionnera, si ce n'est pas le cas dis le moi

  3. #3
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut
    Merci pour ta réponse.
    Effectivement, ça marche bien comme ça... mais en simplifiant le problème, je l'ai un peu trop simplifié.

    Donc oui, appliquer la couleur aux blocs marche dans ce cas... mais j'essaye d'ajouter un degré de "difficulté" pour coller un peu plus à mon code final.
    Voyons... Si j'ajoute par exemple une taille maximale pour l'extension des blocs, avec gestion des blocs en "justify-content: space-between;" sur la ligne, ça ne va plus..

    Avec mon cas initial, j'ai toujours le même problème.
    Avec ta solution, ça marche en "overflow"... mais en mode plein écran seuls les blocs sont colorés, et non la ligne.
    Nom : Plein Ecran2.png
Affichages : 844
Taille : 15,4 Ko

    Le code CSS mis à jour :
    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
    .ensemble {
      overflow-x:auto;
      background:green;
      border: 3px red dashed;
    }
     
    .ligne1 {
      display:flex;
      justify-content: space-between;
      background:cyan;
    }
     
    .ligne2 {
      display:flex;
      justify-content: space-between;
      background:orange;
    }
     
    .block {
      flex-grow:1;
      flex-shrink:0;
      flex-basis:100px;
      max-width:150px;
      height:100px;
      border: 1px red dashed;
    }

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code css : 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
    .ensemble {
      overflow-x:auto;
      background:green;
      border: 3px red dashed;
    }
     
    .ligne1 {
      display:table;
      background:cyan;
      width:100%;
    }
     
    .ligne2 {
      display:table;
      background:orange;
      width:100%;
    }
     
    .block {
      display:table-cell;
     
      min-width:100px;
      height:100px;
      border: 1px red dashed;
    }

  5. #5
    Membre confirmé Avatar de memento80
    Homme Profil pro
    Boulot : ne rentre pas dans une case
    Inscrit en
    Novembre 2004
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Boulot : ne rentre pas dans une case
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2004
    Messages : 163
    Par défaut
    Plus de Flexbox si je comprends bien ?
    Ce qui sous entendrait que FlexBox n'est pas compatible avec mon cas de figure ?

    J'avais pensé à m'en passer si je n'arrivais pas à solutionner le problème mais je trouvais ça un peu dommage.
    Merci de la réponse quand même...
    ... mais n'y a-t-il pas un moyen en conservant flexbox malgré tout ?

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 213
    Par défaut
    Bonjour,
    passe en inline-flex associé à un min-width :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    .ligne1 {
    /*  display:flex;  /* exit */
      display: inline-flex;
      min-width: 100%;
      background:cyan;
    }
     
    .ligne2 {
    /*  display:flex;  /* exit */
      display: inline-flex;
      min-width: 100%;
      background:orange;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. TRIGGERS - String truncation ou numeric overflow
    Par AlBoLeToNo dans le forum InterBase
    Réponses: 5
    Dernier message: 21/09/2004, 12h58
  2. Réponses: 3
    Dernier message: 16/09/2004, 14h11
  3. [Erreur] buffer overflow
    Par cmoulin dans le forum Administration
    Réponses: 8
    Dernier message: 04/08/2004, 14h36
  4. Stack overflow
    Par portu dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2003, 15h16
  5. [LG]floation point overflow
    Par mikoeur dans le forum Langage
    Réponses: 8
    Dernier message: 10/07/2003, 12h51

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