html - Vertical align with flex-box and flex-direction: column -
currently html displaying this:
want display this:
the buttons need vertically aligned text using flex-box, or method not require padding, margin (margin:auto fine), or offsets.
http://codepen.io/simply-simpy/pen/vkpayn
html:
<ul class="nav"> <li><a href="/about.html">about</a> <button>+</button> <ul> <li><a href="/level-2.html">level 2 nav item</a> <button>+</button> <ul> <li><a href="/level-3.html">level 3 nav item</a></li> <li><a href="/level-3.html">level 3 nav item</a></li> <li><a href="/level-3.html">level 3 nav item</a></li> </ul> </li> </ul> </li> </ul>
css
.nav { width: 300px; } button { display: inline-block; width: 25px; height: 25px; align-self: flex-end; } ul { list-style-type: none; } ul > ul li{ padding-left: 20px; } ul > ul > ul li { padding-left: 40px; } li { display: flex; flex-direction: column; line-height: 3; } { border-top: 1px solid black; }
you can group button
, a
in 1 div
, use display: flex
on div align-items: center
vertically center items.
.nav { width: 300px; } button { width: 25px; height: 25px; } ul { list-style-type: none; } ul > ul li { padding-left: 20px; } ul > ul > ul li { padding-left: 40px; } li { width: 100%; border-top: 1px solid black; } { padding: 20px 0; display: block; } div { display: flex; align-items: center; justify-content: space-between; }
<ul class="nav"> <li> <div> <a href="/about.html">about</a> <button>+</button> </div> <ul> <li> <div> <a href="/level-2.html">level 2 nav item</a> <button>+</button> </div> <ul> <li><a href="/level-3.html">level 3 nav item</a> </li> <li><a href="/level-3.html">level 3 nav item</a> </li> <li><a href="/level-3.html">level 3 nav item</a> </li> </ul> </li> </ul> </li> </ul>
Comments
Post a Comment