html - Have child item fill parent using flexbox -
i have navigation have child elements (in case: tags) fill height of flex parent (ul). possible not use padding , solely rely on flexbox here? appreciated here. can see in codepen, black tags not fill area. eventual plan add border @ top when tag hovered. why need fill area. want use flexbox instead of padding if possible.
this have far:
<div class="nav"> <ul> <li><a href="#">link</a></li> <li><a href="#">link</a></li> <li><a href="#">link</a></li> <li><a href="#">link</a></li> <li><a href="#">link</a></li> </ul>
body, html { background:skyblue; padding:0; margin:0; } .nav { background-color:salmon; height:40px; ul { display:flex; align-items:center; height:100%; } ul > li { list-style:none; background:black; flex:1; } ul > li > { } }
the <a>
tags indeed taking full height of parent <li>
elements -- forgot state <li>
elements should take 100%
of height of <ul>
element.
adding height: 100%
.nav ul > li
causes <a>
tags take full height of <ul>
, in seen in codepen i've created here.
note adding height: 100%
causes <a>
tags displayed flush against top of navbar. if want both vertically , horizontally center <a>
tags in expanded navbar, can making <li>
elements flexbox themselves, , utilising align-items
, justify-content
:
.nav ul > li { display: flex; align-items: center; justify-content: center; }
i've created secondary codepen showcasing here.
hope helps!
Comments
Post a Comment