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 :

Empiler des div et les faire déborder [CSS 3]


Sujet :

CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut Empiler des div et les faire déborder
    Bonjour,

    J'aimerais empiler des <div> qui déborderont une fois que la pile sera pleine, comme un calendrier qui se rempli.
    Le probleme c'est que je ne dois pas utiliser de <div> pour les regrouper en colonnes, car les div doivent pouvoir se supprimer via leur classe (JS), et se déplacer automatiquement.

    Code html : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <div id="ligne">
    	<div class="colonne">
    		<div class="petite X">&nbsp;</div>
    		<div class="petite X">&nbsp;</div>
    		<div class="petite X">&nbsp;</div>
    		<div class="petite X">&nbsp;</div>
    		<div class="petite X">&nbsp;</div>
    	</div>
    	<div class="colonne">
    		<div class="petite Y">&nbsp;</div>
    		<div class="petite Y">&nbsp;</div>
    		<div class="petite Y">&nbsp;</div>
    		<div class="petite Z">&nbsp;</div>
    		<div class="petite Z">&nbsp;</div>
    	</div>
    	<div class="colonne">
    		<div class="petite Z">&nbsp;</div>
    		<div class="petite Z">&nbsp;</div>
    		<div class="petite Z">&nbsp;</div>
    		<div class="petite Z">&nbsp;</div>
    		<div class="petite A">&nbsp;</div>
    	</div>
    	<div class="colonne">
    		<div class="petite A">&nbsp;</div>
    		<div class="petite A">&nbsp;</div>
    		<div class="petite B">&nbsp;</div>
    		<div class="petite B">&nbsp;</div>
    		<div class="petite B">&nbsp;</div>
    	</div>
    	<div class="colonne">
    		<div class="petite B">&nbsp;</div>
    		<div class="petite C">&nbsp;</div>
    		<div class="petite C">&nbsp;</div>
    		<div class="petite C">&nbsp;</div>
    		<div class="petite C">&nbsp;</div>
    	</div>
    	<div class="colonne">
    		<div class="petite A">&nbsp;</div>
    		<div class="petite A">&nbsp;</div>
    		<div class="petite A">&nbsp;</div>
    		<div class="petite A">&nbsp;</div>
    		<div class="petite A">&nbsp;</div>
    	</div>
    </div>

    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
    28
    29
    30
    31
    32
     
    #ligne{
    	display: flex;
    	line-height: 25px;
    	background-color: grey;
     
    }
     
    .petite {
    	width: 50px;
    	line-height: 5px;
    }
     
    .X {
    	background-color: red;
    }
     
    .Y {
    	background-color: blue;
    }
    .Z {
    	background-color: green;
    }
    .A {
    	background-color: purple;
    }
    .B {
    	background-color: yellow;
    }
    .C {
    	background-color: cyan;
    }
    Avec colonnes :
    Nom : avec  colonne.png
Affichages : 463
Taille : 343 octets

    Sans colonnes :
    Nom : sans colonne.png
Affichages : 447
Taille : 245 octets

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 228
    Par défaut
    Bonjour,
    je vois que tu utilises flex, as-tu essayé la propriété flex-direction:column ?

  3. #3
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Oui, ca ne prend pas en compte la hauteur de #ligne.
    Nom : flex-directioncolumn;.png
Affichages : 455
Taille : 689 octetsflex-wrap: wrap; permet un retour a la ligne, mais de facon classique. Les div remplisse le conteneur de gauche a droite, puis retour a la ligne. Alors que je chercher a remplir de haut en bas, puis passer a la colonne suivante.
    Nom : flex-wrap wrap;.png
Affichages : 442
Taille : 345 octets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    flex-wrap: wrap;
    	flex-direction:column;

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Un exemple avec grid-layout :

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <!DOCTYPE html>
    <html lang="fr" dir="ltr">
    <head>
    	<!-- cache-control avec max-age=60 pour le développement uniquement -->
      <meta http-equiv="cache-control" content="public, max-age=60">
      <meta charset="utf-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
      <meta name="author" content="Daniel Hagnoul">
      <title>test</title>
      <style>
    		*,
    		*:after,
    		*:before {
    			box-sizing: border-box;
    		}
     
    		/* code du test */
     
        body {
          margin: 20px;
          background: #fff;
          font-size: 1.2em;
        }
        h1 {
          margin: 0 0 1em;
          color: #345;
          text-align: center;
        }
        section.container {
          display: grid;
          grid-template-columns: repeat(2, 1fr);
          grid-template-rows: 100px 100px 100px 100px 100px;
          grid-auto-flow: column;
          background: beige;
          border: 3px dotted orange;
          margin-bottom: 2em;
        }
        article {
         margin: 0.3rem;
         padding: 0.3rem;
         border: 1pt solid black;
          color: #fff;
          background: orange;
        }
     
     
     
    		/* fin code du test */
     
    	</style>
    </head>
    <body>
    	<main>
     
    		<h1>Grid Layout : auto-flow</h1>
     
    		<section class="container">
    			<article>Article 1</article>
    			<article>Article 2</article>
    			<article>Article 3</article>
    			<article>Article 4</article>
    			<article>Article 5</article>
    			<article>Article 6</article>
    			<article>Article 7</article>
    			<article>Article 8</article>
    		</section>
     
    	</main>
    </body>
    </html>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 228
    Par défaut
    Je n'ai pas dis que de mettre une direction en colonne suffirait , il faut bien évidement allez un peu plus loin et a commencer par modifier la structure HTML.

    Par exemple :
    Code html : 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
    28
    29
    30
    31
    32
    <div id="ligne-flex">
      <div class="petite X">&nbsp;</div>
      <div class="petite X">&nbsp;</div>
      <div class="petite X">&nbsp;</div>
      <div class="petite X">&nbsp;</div>
      <div class="petite X">&nbsp;</div>
      <div class="petite Y">&nbsp;</div>
      <div class="petite Y">&nbsp;</div>
      <div class="petite Y">&nbsp;</div>
      <div class="petite Z">&nbsp;</div>
      <div class="petite Z">&nbsp;</div>
      <div class="petite Z">&nbsp;</div>
      <div class="petite Z">&nbsp;</div>
      <div class="petite Z">&nbsp;</div>
      <div class="petite Z">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
      <div class="petite B">&nbsp;</div>
      <div class="petite B">&nbsp;</div>
      <div class="petite B">&nbsp;</div>
      <div class="petite B">&nbsp;</div>
      <div class="petite C">&nbsp;</div>
      <div class="petite C">&nbsp;</div>
      <div class="petite C">&nbsp;</div>
      <div class="petite C">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
      <div class="petite A">&nbsp;</div>
    </div>
    et en ne mettant que le CSS suivant sur le conteneur, le reste restant inchangé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #ligne-flex {
      display: inline-flex;
      flex-direction: column;
      flex-wrap: wrap;
      height: 25px;
      line-height: 25px;
      background-color: grey;
    }
    tu devrais obtenir le résultat souhaité.

    PS : au passage la structure est aussi simple que celle proposée par danielhagnoul, que je viens de voir, en utilisant l'approche grid-layout.

  6. #6
    Membre averti
    Homme Profil pro
    Chomeur a plein temps
    Inscrit en
    Août 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chomeur a plein temps

    Informations forums :
    Inscription : Août 2017
    Messages : 14
    Par défaut
    Moins de code en flex et plus familier.
    Je n'avais jamais entendu parlé de grid CSS et je ne connaissais pas inline-flex.

    Merci pour l'aide.

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

Discussions similaires

  1. Mise en page des div : fixer les éléments
    Par Gillian D dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/04/2016, 19h44
  2. [CSS 3] Empiler des div
    Par byrong dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 27/10/2013, 21h40
  3. Empilement des div float
    Par Elendill dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/12/2010, 19h20
  4. appeler des images et les faire défiler
    Par ploufleouf74 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/09/2010, 10h57
  5. preloader des images pour les faires afficher apres un clic
    Par polochtwo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2009, 14h37

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