我已经获得了一个功能切换的导航栏,但是完全不知道如何动画化,就像Bootstrap一样。我已经设置好了,以便JS在导航栏中添加和删除“ display-menu”类,而且我不确定如何使菜单项滑入。我不确定这是否是CSS-基于解决方案,基于JS的解决方案,或两者兼而有之。关于如何解决这个问题的任何想法或指示?这就是我已经要做的(请原谅Django标签):
HTML:
<navbar>
<ul id="navbar" class="nav-list">
<li class="nav-item">
<a href="#">
<img src="{% static 'dblfree/img/logo-circle.png' %}" alt="Logo">
</a>
</li>
<li class="nav-item toggle">
<button class="btn-primary" onclick="toggleNavbar()">☰</button>
</li>
<li class="nav-item">
<a href="#">Blog</a>
</li>
<li class="nav-item">
<a href="#">About</a>
</li>
<li class="nav-item">
<a href="#">Portfolio</a>
</li>
<li class="nav-item">
<button class="btn-primary">Contact</button>
</li>
</ul>
</navbar>
CSS:
:root {
--clr-primary: #047c84;
--clr-shadow: #cfd8dc;
--radius: 0.5rem;
}
body {
background-color: #f0f7f8; /* TEMP */
font-family: 'Montserrat', sans-serif;
padding: 1rem;
}
.nav-list {
background: white;
box-shadow: 0px 0px 10px var(--clr-shadow);
padding: 1rem 0;
border-radius: var(--radius);
display: flex;
justify-content: flex-end;
align-items: center;
}
.nav-item {
list-style: none;
margin-right: 2rem;
}
.nav-item a {
text-decoration: none;
color: black;
transition: all 200ms ease-in;
}
.nav-item a:hover {
color: var(--clr-primary);
}
.nav-item:first-child {
margin-right: auto;
margin-left: 2rem;
}
.nav-item img {
width: 50px;
}
.btn-primary {
font-family: 'Montserrat', sans-serif;
font-size: 1rem;
background: none;
border: 2px solid var(--clr-primary);
outline: none;
border-radius: var(--radius);
padding: 0.5rem 1rem;
transition: all 200ms ease-in;
}
.btn-primary:hover {
color: white;
background: var(--clr-primary);
}
.toggle {
display: none;
}
@media screen and (max-width: 600px) {
body {
padding: 0;
}
.toggle {
display: block;
}
.nav-list {
border-radius: 0;
flex-wrap: wrap;
}
.nav-list li:nth-child(n+3) {
width: 100%;
text-align: right;
margin-top: 2rem;
display: none;
}
.nav-list.display-menu .nav-item {
display: block;
transition: all 800ms;
}
}
JavaScript:
function toggleNavbar() {
let navbar = document.getElementById("navbar");
if (navbar.className === "nav-list") {
navbar.className += " display-menu";
}
else {
navbar.className = "nav-list";
}
}
答案 0 :(得分:1)
将链接标签添加到关闭和打开按钮。并将onclick =“ opennav()”添加到打开链接,并将onclick =“ closenav()”添加到关闭链接。
function openNav() {
document.getElementById("mySidenav").style.width = "250px";
}
function closeNav() {
document.getElementById("mySidenav").style.width = "0";
}