我正在网站上工作并试图制作带有汉堡菜单的移动版本。这个想法是,当点击汉堡时会出现一个下拉菜单。所以我试图做的就是这个
HTML:
<nav class="mobile">
<ul>
<li id="burgericon"><img src="./images/Icons/burgericon.png" alt="icon" onclick="changeDisplay()"></li>
<li id="mobilecart"><a href="#cart"><img src="./images/Icons/icon_cart.png" alt="cart"></a></li>
<ul>
<li id="dropdown"><a href="#">Store</a></li>
<li id="dropdown"><a href="#">About</a></li>
<li id="dropdown"><a href="#">Contact</a></li>
</ul>
</ul>
</nav>
CSS:
#burgericon img {
padding-top: 10px;
padding-left: 15px;
padding-bottom: 5px;
float: left;
width: 50px;
height: 50px;
}
#mobilecart img {
padding-top: 20px;
padding-right: 20px;
height: 33px;
width: 38px;
float: right;
}
#dropdown {
display: none;
text-decoration: none;
color: black;
background-color: black;
}
和JS:
function changeDisplay() {
alert("eys");
document.getElementbyId("dropdown").style.display = "block";
}
警报有效,但由于某种原因,它不会将该ID的显示更改为阻止而不是无。有任何想法吗?我暂时不能使用jQuery。
答案 0 :(得分:1)
请注意此行中的区分大小写:
document.getElementById
(注意首都B
)。
html
<ul id="ul">
<li ><a href="#">Store</a></li>
<li ><a href="#">About</a></li>
<li ><a href="#">Contact</a></li>
</ul>
js
document.getElementById("ul").style.display = "block";
答案 1 :(得分:0)
您只能拥有一次ID。将ID移动到<ul>
元素中。此外,它是getElementById
,大写B
。
function changeDisplay() {
document.getElementById("dropdown").style.display = "block";
}
&#13;
#burgericon img {
padding-top: 10px;
padding-left: 15px;
padding-bottom: 5px;
float: left;
width: 50px;
height: 50px;
}
#mobilecart img {
padding-top: 20px;
padding-right: 20px;
height: 33px;
width: 38px;
float: right;
}
#dropdown {
display: none;
text-decoration: none;
color: black;
background-color: black;
}
&#13;
<nav class="mobile">
<ul>
<li id="burgericon"><a onclick="changeDisplay()">Burger</a></li>
<li id="mobilecart"><a href="#cart">Cart</a></li>
<ul id="dropdown">
<li><a href="#">Store</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</ul>
</nav>
&#13;
答案 2 :(得分:0)
我要给出的第一个建议是永远不要对元素使用相同的ID 并试用这段代码。
docker run -p 49160:8080 -d <your username>/node-web-app:test1
答案 3 :(得分:0)
我将方法更改为下拉列表的工作方式以显示其他方式。不使用JavaScript只影响一种样式(即display
),而是使用多个类来控制多种样式。
classList
用于在2个状态之间切换 .on
和.off
.on
等级决定了下拉列表的高度和不透明度随着它的增长和淡入而变化。.off
等级决定了下拉列表的高度和不透明度,因为它会缩小并淡出。<li>
每个都有#dropdown
个ID,这是错误的, ID必须始终是唯一的,没有例外。所以每个人现在都有一个班级(.dropdown
)。
#dropdown
重新分配给<ul>
。最好是定位父元素而不是每个元素。注意:通常情况下,预计下拉菜单会以某种方式消失,因此此代码确实会发生这种情况。此函数也是可重用的,并且可以传递任何简单的CSS选择器。
特征
toggleState(target)
用法
target:引用元素的字符串。语法与CSS选择器和jQuery对象完全相同。
<ul id="idOfUL">
="#idOfUL"
<li class="classOfLI">
=".classOfLI"
<a href="home.html">
="a"
function toggleState(target) {
var tgt = document.querySelector(target);
if (tgt.classList.contains('off')) {
tgt.classList.add('on');
tgt.classList.remove('off');
} else {
tgt.classList.remove('on');
tgt.classList.add('off');
}
}
&#13;
* {
margin: 0;
padding: 0;
}
ul {
list-style: none;
}
a,
a:link,
a:visited {
color: gold;
text-decoration: none;
}
a:hover,
a:active {
color: cyan;
}
img {
cursor: pointer;
}
#burgericon img {
padding-top: 10px;
padding-left: 15px;
padding-bottom: 5px;
float: left;
width: 50px;
height: 50px;
}
#mobilecart img {
padding-top: 20px;
padding-right: 20px;
height: 33px;
width: 38px;
float: right;
list-style: none;
}
#dropdown {
text-decoration: none;
color: white;
background-color: black;
float: left;
margin: 50px 0 0 0;
padding: 10px 5px;
position: relative;
right: 50px;
cursor: pointer;
border-radius: 4px;
}
.dropdown {
height: 30px;
}
.off {
max-height: 0;
overflow: hidden;
opacity: 0;
transition: max-height 1s ease-out, opacity 1.5s linear .5s;
}
.on {
max-height: 1500px;
opacity: 1;
transition: max-height 1.25s ease-in, opacity 2s linear;
}
&#13;
<nav class="mobile">
<ul>
<li id="burgericon">
<img src="https://cdn0.iconfinder.com/data/icons/social-messaging-productivity-4/128/menu-2-128.png" alt="icon" onclick="toggleState('#dropdown')">
</li>
<li id="mobilecart">
<a href="#cart">
<img src="http://www.iconsfind.com/wp-content/uploads/2013/11/20131104_527707eb9746b.png" alt="cart">
</a>
</li>
<ul id='dropdown' class='off'>
<li class="dropdown"><a href="#">Store</a>
</li>
<li class="dropdown"><a href="#">About</a>
</li>
<li class="dropdown"><a href="#">Contact</a>
</li>
</ul>
</ul>
</nav>
&#13;