2 votes

Rendre le conteneur pleine largeur avec flex

J'essaie de créer un menu déroulant de catégories avec plusieurs colonnes en fonction de la longueur de l'élément <ul> .

J'ai créé un violon ici

Je veux placer chaque élément du sous-menu sous le précédent jusqu'à ce que la hauteur du sous-menu soit atteinte. Si c'est le cas, tout doit être placé dans une nouvelle colonne.

Quelque chose comme ça :

Main category
 |
 subcategory1                         subcategory3
  |subsub1 for subcategroy1            |subsub1 for subcategroy3 
  |subsub2 for subcategroy1           |
 |                                    subcategory4
 subcategory2                          | etc...
  |subsub1 for subcategroy2 
  |subsub2 for subcategroy2 
 --------------------------------------------------------------------  
 // total height of the dropdown 
    is reached here

J'utilise flex-flow et pour ce qui fonctionne vraiment bien. Cependant, je n'arrive pas à faire en sorte que mon conteneur de liste déroulante soit de pleine largeur avec une couleur de fond.

Mon HTML ressemble à ceci :

    <div class="cats">
      <ul>

        <li class="item sub">
          <a title="Baby" href="http://ministry.webshopapp.com/baby/" class="itemLink">Baby</a>
          <div class="subnav">
            <ul class="flex-wrap">
              <li class="subitem title"><a title="Borstvoeding" href="#" class="title">something</a></li>
              <li class="subitem"><a title="ATTITUDE" href="#" class="subitemLink">ATTITUDE</a></li>
              <li class="subitem"><a title="Apple Park" href="#" class="subitemLink">Apple Park</a></li>
              <li class="subitem title"><a title="Borstvoeding" href="#" class="title">something</a></li>
              <li class="subitem"><a title="ATTITUDE" href="#" class="subitemLink">ATTITUDE</a></li>
            </ul>
          </div>
        </li>
</ul>
</div>

Comme CSS est utiliser ceci :

.cats .subnav {
  background: #fff none repeat scroll 0 0;
  border: 1px solid #eee;
  padding: 30px;
  position: absolute;
  text-align: left;
  z-index: 99;
  display:none;
}
.cats .item.sub:hover .subnav {
  display: block;
}
.flex-wrap {
  background: #fff none repeat scroll 0 0;
  display: flex;
  flex-flow: column wrap;
  height: 200px;
}
.subnav .subitem {
  background: #fff none repeat scroll 0 0;
  line-height: 36px;
}

Alors comment puis-je faire .subnav pour remplir l'arrière-plan aussi longtemps que nécessaire ?

0voto

vignesh Points 825

Veuillez vous référer au code css ci-dessous :

Ajouter left y right a .cats .subnav

.cats .subnav {
    right: 0;
    left: 0; 
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X