Reputation: 19
I would like to align the elements of my navbar vertically on large screens and horizontally on small screens. This works well, except on small screens one element is not top-aligned but slightly moved downwards (see image). How do I get the elements of the horizontal navbar top-aligned? I would like the "Publications" element to be top-aligned with the "Teaching" and "Home" elements.
Adding align: top
to different CSS environments had no effect.
Thank you for your help.
.nav {
padding-left:10px;
}
.nav ul {
all: unset;
list-style-type: none;
margin: 0;
padding: 5px 0 10px 5px;
}
.nav ul li {
all: unset;
padding: 2px 20px;
cursor: pointer;
}
.nav ul li a {
all: unset;
display: block;
color: #AFBDD5;
font-family: Sans-Serif;
}
.nav ul li a:hover, .nav ul li a:focus, a:hover, a:visited, details summary:hover {
font-weight: bold;
text-decoration: none;
color: #AFBDD5;
border-bottom: 1px solid;
}
@media screen and (max-width: 480px) {
.nav {
float: left;
margin-top: 10px;
margin-bottom: 10px;
}
.nav ul li a {
float: left;
display: inline;
color: #AFBDD5;
text-align: center;
padding: 10px;
background-color: #010B14;
border: 1px solid #FBFEF9;
margin-right: 5px;
margin-bottom: 5px;
}
.nav ul li a:hover, .nav ul li a:focus, a:hover, a:visited, details summary:hover {
border-bottom: none;
}
}
<div class="nav">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="teaching.html">Teaching</a></li>
<li><a href="publications.html">Publications</a></li>
<li><a href="resources.html">Resources</a></li>
<li><a href="cv.html">CV</a></li>
<li><a href="student-work.html">Borrowed Plumes</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
Upvotes: 0
Views: 168
Reputation: 363
Check this one out. Dont use float use flex instead.
.nav {
padding-left: 10px;
}
.nav ul {
all: unset;
list-style-type: none;
margin: 0;
padding: 5px 0 10px 5px;
display: flex;
flex-direction: column;
}
.nav ul li {
all: unset;
padding: 2px 20px;
cursor: pointer;
}
.nav ul li a {
all: unset;
display: block;
color: #afbdd5;
font-family: Sans-Serif;
}
.nav ul li a:hover,
.nav ul li a:focus,
a:hover,
a:visited,
details summary:hover {
font-weight: bold;
text-decoration: none;
color: #afbdd5;
border-bottom: 1px solid;
}
@media screen and (max-width: 480px) {
.nav {
margin-top: 10px;
margin-bottom: 10px;
}
.nav ul li a {
color: #afbdd5;
text-align: center;
padding: 10px;
background-color: #010b14;
border: 1px solid #fbfef9;
margin-right: 5px;
margin-bottom: 5px;
}
.nav ul {
flex-direction: row;
flex-wrap: wrap;
}
.nav ul li a:hover,
.nav ul li a:focus,
a:hover,
a:visited,
details summary:hover {
border-bottom: none;
}
<div class="nav">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="teaching.html">Teaching</a></li>
<li><a href="publications.html">Publications</a></li>
<li><a href="resources.html">Resources</a></li>
<li><a href="cv.html">CV</a></li>
<li><a href="student-work.html">Borrowed Plumes</a></li>
<li><a href="contact.html">Contact</a></li>
</ul>
</div>
Upvotes: 1
Reputation: 1
You should try display: flex
and align-items
, justify-content
properties.
Follow these links for more information.
Upvotes: 0