我正在为我的网站使用导航栏,并制作了一些Java脚本与CSS一起使用。 在运行它之前,请确保结果窗口的宽度小于760像素。
function compressNavbar() {
var x = document.getElementById("navbar");
if (x.className === "responsive-h2") {
x.className += " responsive-h2-expand";
} else {
x.className = "responsive-h2";
}
}
ul.blue {
background-color: DodgerBlue;
}
ul.blue * {
color: white;
}
/* Horizontal navbar */
ul.horizontal-navbar {
list-style-type: none;
margin: 0;
padding: 0;
overflow: hidden;
}
.horizontal-navbar li {
float: left;
}
.horizontal-navbar li a {
display: block;
text-align: center;
padding: 14px 16px;
text-decoration: none;
}
/* responsive */
@media screen and (max-width: 760px) {
ul.responsive-h2 li {
display: block;
}
ul.responsive-h2 li:not(:first-child):not(:last-child) {
display: none;
/* Remove all links except home and the menu button */
}
ul.responsive-h2-expand {
position: relative;
}
.responsive-h2-expand li:last-child {
position: absolute;
right: 0;
top: 0;
}
ul.responsive-h2-expand li {
float: none !important;
display: block !important;
}
ul.responsive-h2-expand li * {
text-align: left !important;
}
ul.responsive-h2-expand li a {
padding: 10px 14px;
padding-left: 18px;
padding-bottom: 11px;
}
ul.responsive-h2-expand li {
list-style-type: none;
}
}
<ul class="responsive-h2 horizontal-navbar blue" id="navbar">
<li><a href="#">Home</a></li>
<li><a href="#">link</a></li>
<li><a href="#">link</a></li>
<li>
<a href="javascript:void(0)" onclick="compressNavbar()">
Menu
</a>
</li>
</ul>
开始时效果很好-我们有一个漂亮的样式导航栏,除了“主页”和菜单按钮外,所有链接都缺失。但是,当我按下菜单按钮时,展开的导航栏没有使用我的blue
类设置样式,并且没有显示所有链接。此外,再次按菜单时,我的大部分样式都丢失了。
使这种情况发生的代码有什么问题?由于我是JS的新手,所以我以为是-我认为className
可能做错了什么,但是我不知道该怎么办或如何解决。
谢谢。
答案 0 :(得分:1)
我认为最好使用classList.toggle
:
function compressNavbar() {
var x = document.getElementById("navbar");
x.classList.toggle("responsive-h2-expand");
}
答案 1 :(得分:0)
我认为您没有正确替换class
function compressNavbar() {
var x = document.getElementById("navbar");
if (x.className === "responsive-h2") {
x.className += " responsive-h2-expand";
// you are not adding "blue" and "horizontal-navbar" classes back
// ex: x.className = "responsive-h2 responsive-h2-expand horizontal-navbar blue"
} else {
x.className = "responsive-h2";
}
}
您可以使用classList方法来有效地操作class