Reputation: 1993
I am trying to build a menu, this is the html
<header className="header">
<div className="main-menu">
<ul>
<li className="main-menu__app-menu"><Link href="#"><a>Link A</a></Link></li>
<li className="main-menu__app-menu"><Link href="#"><a>Link B</a></Link></li>
<li className="main-menu__app-menu"><Link href="#"><a>Link C</a></Link></li>
<li className="main-menu__user-menu"><Link href="#"><a>Link D</a></Link></li>
<li className="main-menu__user-menu"><Link href="#"><a>Link E</a></Link></li>
<li className="main-menu__user-menu">
<img class="main-menu__user-image__image" src="">
</li>
</ul>
</div>
</header>
This is my css
.main-menu {
& > ul {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
& > li {
display: inline;
& > a {
display: block;
text-align: center;
padding: 0 1.4rem 0rem 1.4rem;
color: $link-color;
text-decoration: none;
&:hover {
color: $link-hover-color;
}
}
}
}
&__app-menu {
float:left;
}
&__user-menu {
float:right;
border: 1px solid #000000;
border-radius: 1.5rem;
margin: 0 .1rem;
}
&__user-image {
float:right;
width: 5rem;
&__image {
border-radius: 50%;
cursor: pointer;
}
}
}
I would like to have the image vertically aligned with the other links, at the moment it is aligned to the top and I can't figure out why. Thank you.
Upvotes: 0
Views: 182
Reputation: 1525
Using flex
and align-items
is a good way for vertical alignment control.
More information: https://www.w3schools.com/cssref/css3_pr_align-items.asp
Also margin: auto
is useful to separate items in the flex.
JSX code:
<header className="header">
<div className="main-menu">
<ul>
<li className="main-menu__app-menu"><Link href="#"><a>Link A</a></Link></li>
<li className="main-menu__app-menu"><Link href="#"><a>Link B</a></Link></li>
<li className="main-menu__app-menu"><Link href="#"><a>Link C</a></Link></li>
<li className="main-menu__user-menu main-menu__user-image">
<img class="main-menu__user-image__image" src="">
</li>
<li className="main-menu__user-menu"><Link href="#"><a>Link E</a></Link></li>
<li className="main-menu__user-menu"><Link href="#"><a>Link D</a></Link></li>
</ul>
</div>
</header>
Sass code:
.main-menu {
& > ul {
list-style-type: none;
margin: 0;
padding: 0;
display: flex;
align-items: center;
& > li {
display: block;
& > a {
display: block;
text-align: center;
padding: 0 1.4rem 0rem 1.4rem;
color: $link-color;
text-decoration: none;
&:hover {
color: $link-hover-color;
}
}
}
}
&__app-menu {
}
&__user-menu {
border: 1px solid #000000;
border-radius: 1.5rem;
margin: 0 .1rem;
}
&__user-image {
margin-left: auto;
&__image {
border-radius: 50%;
cursor: pointer;
}
}
}
Upvotes: 1