Ul widht auto stretch with max height
I have an html structure something like this:
<ul class="groupmenu-drop">
<li class="level1">
<a href="#"> BMW </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> i3 </li>
<li class="level2"> i5 </li>
<li class="level2"> i7 </li>
</ul>
</li>
<li class="level1">
<a href="#"> Mercedez Benz </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> a-class </li>
<li class="level2"> e-class </li>
<li class="level2"> c-class </li>
<li class="level2"> s-class </li>
</ul>
</li>
</ul>
my current css:
ul.groupmenu-drop{
display: block;
text-align: left;
padding: 0;
margin: 0;
position: absolute;
background: #fff;
top: 100%;
z-index: 99;
list-style: none none;
box-sizing: border-box;
}
li{
list-style: none
padding: 8px 15px;
min-width: 230px;
position: relative;
margin: 0px auto;
box-sizing: border-box;
}
.groupmenu-drop > li {
width: 100%;
}
I want the first ul to have a maximum height, so when level1 li and its children overlap the height of the ul, this will cause the ul to stretch its width and level1 li will fill it, this is what I want it to look like
+3
source to share
2 answers
Try this using flex-flow: column wrap;
will display li
as columns, will and optionally be wrapped or will have vertical space available.
.groupmenu-drop:not(.level1) {
max-height: 200px;
display: -webkit-flex;
display: flex;
-webkit-flex-flow: column wrap;
flex-flow: column wrap;
}
<ul class="groupmenu-drop">
<li class="level1">
<a href="#"> BMW </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> i3 </li>
<li class="level2"> i5 </li>
<li class="level2"> i7 </li>
</ul>
</li>
<li class="level1">
<a href="#"> Mercedez Benz </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> a-class </li>
<li class="level2"> e-class </li>
<li class="level2"> c-class </li>
<li class="level2"> s-class </li>
</ul>
</li>
<li class="level1">
<a href="#"> Audi </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> a-class </li>
<li class="level2"> e-class </li>
<li class="level2"> c-class </li>
<li class="level2"> s-class </li>
</ul>
</li>
</ul>
+1
source to share
Something like that:
.groupmenu-drop {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
}
.level1 {
flex-basis: 50%;
}
.groupmenu-drop .groupmenu-drop {
display: block;
}
<ul class="groupmenu-drop">
<li class="level1">
<a href="#"> BMW </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> i3 </li>
<li class="level2"> i5 </li>
<li class="level2"> i7 </li>
</ul>
</li>
<li class="level1">
<a href="#"> Mercedez Benz </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> a-class </li>
<li class="level2"> e-class </li>
<li class="level2"> c-class </li>
<li class="level2"> s-class </li>
</ul>
</li>
<li class="level1">
<a href="#"> Mercedez Benz </a>
<ul class="level1 groupmenu-drop">
<li class="level2"> a-class </li>
<li class="level2"> e-class </li>
<li class="level2"> c-class </li>
<li class="level2"> s-class </li>
</ul>
</li>
</ul>
+2
source to share