我在这里有点初学者,并在FreeCodeCamp上做练习。在处理投资组合网站项目时,我尝试从ws3schools的一些代码向网站添加Javascript响应式移动导航。
导航显示正常,但点击它什么都不做。这是我的CodePen,我所做的任何想法都阻止它在点击时弹出导航链接? https://codepen.io/colum1225/pen/xLwMJG
这是导航条码:
<!-- HTML -->
<div class="topnav" id="myTopnav">
<h3>Brandon Ray</h3>
<a href="#contact">Contact</a>
<a href="#about">About</a>
<a href="#portfolio">Portfolio</a>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">☰</a>
</div>
<!-- CSS -->
.topnav {
background-color: #2C8597;
overflow: hidden;
width: 100%;
position: fixed;
z-index: 9;
}
.topnav h3 {
float: left;
color: #f2f2f2;
font-family: sans-serif;
font-size: 1.5em;
padding-left: 30px;
letter-spacing: .04em;
font-weight: 500;
}
.topnav a {
float: right;
display: block;
color: #f2f2f2;
text-align: center;
padding: 27px 30px 27px 30px;
text-decoration: none;
font-size: 1.25em;
font-family: sans-serif;
}
.topnav a:hover {
background-color: #ddd;
color: black;
transition: .5s;
}
.topnav a:active {
background-color: #ddd;
color: black;
}
.topnav .icon {
display: none;
font-size: 1.3em;
}
@media screen and (max-width: 640px) {
.topnav a {display: none;}
.topnav .icon {
float: right;
display: block;
color: white;
margin-right: 30px;
}
}
@media screen and (max-width: 640px) {
topnav.responsive {position: relative;}
topnav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
}
topnav.responsive a {
float: none;
display: block;
text-align: right;
}
}
<!-- JS -->
function myFunction() {
var x = document.getElementById("myTopnav");
if (x.className === "topnav") {
x.className += " responsive";
} else {
x.className = "topnav";
}
}
答案 0 :(得分:2)
到目前为止工作很棒。
您的topnav
类选择器前面缺少一个点,用于.responsive
规则。请参阅下面的固定CSS,
@media screen and (max-width: 640px) {
.topnav.responsive {position: relative;}
.topnav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
}
.topnav.responsive a {
float: none;
display: block;
text-align: right;
}
}
要修复第一个移动导航下拉菜单项与菜单图标的重叠,请尝试在第一个菜单项中添加margin-top
。菜单的高度为(82px)。
此规则如下所示,
.topnav.responsive a:first-of-type {
margin-top: 82px;
}
将此规则与您的其他 .topnav.responsive 规则(第77行)包含在内。
答案 1 :(得分:1)
在你的CSS中,你需要一段时间topnav
:
@media screen and (max-width: 640px) {
.topnav.responsive {position: relative;}
.topnav.responsive a.icon {
position: absolute;
right: 0;
top: 0;
}
.topnav.responsive a {
float: none;
display: block;
text-align: right;
}
}
或者你可以删除topnav部分altogetther并且只有responsive
部分。
定位修复:
将图标位置更改回亲戚,并将图标放在导航栏的顶部:
HTML
<div class="topnav" id="myTopnav">
<h3>Brandon Ray</h3>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">☰</a>
<a href="#contact">Contact</a>
<a href="#about">About</a>
<a href="#portfolio">Portfolio</a>
</div>
CSS
.topnav.responsive a.icon {
position: relative;
right: 0;
top: 0;
}