我的代码有问题。我想制作一个响应式导航栏,但是,虽然当我点击汉堡时它变成“X”,但菜单没有显示。我真的不明白,这让我发疯。
感谢任何可以启发我的人。
HTML代码(我把JS放在HTML中):
var typed = new Typed(".auto-type", {
strings : ["WEB", "MOBILE", "PHP"],
typeSpeed : 300,
backSpeed : 300,
loop : true
});
const hamburger = document.querySelector(".hamburger");
const navbarNav = document.querySelector(".container .navbar_nav");
hamburger.addEventListener("click", mobileMenu);
function mobileMenu() {
hamburger.classList.toggle("active");
navbarNav.classList.toggle("active");
}
const navLink = document.querySelectorAll(".cat");
navLink.forEach(n => n.addEventListener("click", closeMenu));
function closeMenu() {
hamburger.classList.remove("active");
navbarNav.classList.remove("active");
}
* {
right: 0;
left: 0;
}
body {
margin: 0;
padding: 0;
width: 100%;
}
/* DEBUT PARTIE NAVBAR */
.container {
margin-right: 3%;
margin-left : 3%;
}
.navbar {
position: fixed;
display: flex;
align-items: center;
background-color: black;
justify-content: center;
z-index: 100;
}
.navbar_nav {
display: flex;
list-style: none;
align-items: center;
padding : 0 10px 0 10px;
/* margin-right: 30%; */
/* margin-left: -30%; */
}
.navbar_brand {
margin-right: auto;
margin-left: 9%;
}
#logo {
height: 40px;
width: 150px;
}
li {
display: inline-block;
padding-right: 14px;
}
.cat {
text-decoration: none;
color: rgb(255, 255, 255);
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
font-size: 21px;
padding: 12px;
width: 25%;
text-align: center;
}
.cat:hover {
color: #007FFF;
}
.cat:active {
color: #007FFF;
background-color: white;
}
.social-media {
margin-right: 9%;
}
.social-icon {
height: 20px;
}
a:active {
background-color: #007FFF;
color: white;
}
.hamburger {
display: none;
}
.bar {
display: block;
width: 25px;
height: 3px;
margin: 5px auto;
-webkit-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
background-color: #101010;
}
/* FIN PARTIE NAVBAR */
#backgroundimage {
background-image: url("../img/Frame\ 1.png");
width: 100vw;
height: 100vh;
background-size: 100% 100%;
background-repeat: no-repeat;
position: relative;
/*filter: brightness(15%);*/
display: flex;
align-items: center;
justify-content: center;
z-index: 2;
}
.msg {
color: rgb(255, 255, 255);
font-size: 75px;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
}
span {
color: #007FFF;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
}
@media screen and (max-width: 1075px) {
.navbar_nav {
position: fixed;
display: flex;
align-items: center;
background-color: black;
justify-content: center;
z-index: 100;
}
.navbar_nav.active {
left: 0;
}
#logo {
margin-top: 10px;
height: 47px;
width: 169px;
}
.cat {
text-decoration: none;
color: rgb(255, 255, 255);
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
font-size: 20px;
padding: 12px;
width: 25%;
text-align: center;
display: none;
margin: 2.5rem 0;
}
.social-media {
display: none;
}
.social-icon {
display: none;
}
.hamburger {
display: block;
cursor: pointer;
color: white;
padding-right: 9%;
}
.hamburger.active .bar:nth-child(2) {
opacity: 0;
}
.hamburger.active .bar:nth-child(1) {
transform: translateY(8px) rotate(45deg);
}
.hamburger.active .bar:nth-child(3) {
transform: translateY(-8px) rotate(-45deg);
}
.bar {
display: block;
width: 25px;
height: 3px;
margin: 5px auto;
-webkit-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
background-color: #007FFF;
}
}
@media screen and (max-width: 600px) {
.msg {
color: rgb(255, 255, 255);
font-size: 55px;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
justify-content: center;
text-align: center;
}
span {
color: #007FFF;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
justify-content: center;
text-align: center;
}
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Urban Web Solutions</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<!--LA PARTIE CONCERNANT LA NAVBAR-->
<nav id="navbar" class="navbar">
<a class="navbar_brand" href="index.html"><img id="logo" src="img/logo.png" alt=""></a>
<div class="container">
<ul class="navbar_nav">
<li ><a class="cat" href="index.html">ACCUEIL</a></li>
<li><a class="cat" href="#">NOTRE AGENCE</a></li>
<li><a class="cat" href="#services">NOS OFFRES</a></li>
<li><a class="cat" href="">NOUS CONTACTER</a></li>
</ul>
</div>
<div class="social-media">
<a href=""><img class="social-icon" src="img/fb.png" alt=""></a>
<a href=""><img class="social-icon" src="img/twitter_3256013.png" alt=""></a>
<a href=""><img class="social-icon" src="img/in.png" alt=""></a>
</div>
<div class="hamburger">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</div>
</nav>
<!--FIN DE LA PARTIE CONCERNANT LA NAVBAR-->
<header>
<div id="backgroundimage">
<h1 class="msg">DÉVELOPPEUR <span class="auto-type"></span></h1>
</div>
</header>
<main>
</main>
<script src="https://unpkg.com/typed.js@2.0.16/dist/typed.umd.js"></script>
</body>
</html>
在
.cat
'css 中,您将锚点设置为不显示。但你从未将它们设置为显示。
在 CSS 中,当 navbar_nav 处于活动状态时,我使用下面的内容来显示 .cat 锚点。
.navbar_nav.active .cat{
display:block
}
var typed = new Typed(".auto-type", {
strings : ["WEB", "MOBILE", "PHP"],
typeSpeed : 300,
backSpeed : 300,
loop : true
});
const hamburger = document.querySelector(".hamburger");
const navbarNav = document.querySelector(".container .navbar_nav");
hamburger.addEventListener("click", mobileMenu);
function mobileMenu() {
hamburger.classList.toggle("active");
navbarNav.classList.toggle("active");
}
const navLink = document.querySelectorAll(".cat");
navLink.forEach(n => n.addEventListener("click", closeMenu));
function closeMenu() {
hamburger.classList.remove("active");
navbarNav.classList.remove("active");
}
* {
right: 0;
left: 0;
}
body {
margin: 0;
padding: 0;
width: 100%;
}
/* DEBUT PARTIE NAVBAR */
.container {
margin-right: 3%;
margin-left : 3%;
}
.navbar {
position: fixed;
display: flex;
align-items: center;
background-color: black;
justify-content: center;
z-index: 100;
}
.navbar_nav {
display: flex;
list-style: none;
align-items: center;
padding : 0 10px 0 10px;
/* margin-right: 30%; */
/* margin-left: -30%; */
}
.navbar_brand {
margin-right: auto;
margin-left: 9%;
}
#logo {
height: 40px;
width: 150px;
}
li {
display: inline-block;
padding-right: 14px;
}
.cat {
text-decoration: none;
color: rgb(255, 255, 255);
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
font-size: 21px;
padding: 12px;
width: 25%;
text-align: center;
}
.navbar_nav.active .cat{
display:block
}
.cat:hover {
color: #007FFF;
}
.cat:active {
color: #007FFF;
background-color: white;
}
.social-media {
margin-right: 9%;
}
.social-icon {
height: 20px;
}
a:active {
background-color: #007FFF;
color: white;
}
.hamburger {
display: none;
}
.bar {
display: block;
width: 25px;
height: 3px;
margin: 5px auto;
-webkit-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
background-color: #101010;
}
/* FIN PARTIE NAVBAR */
#backgroundimage {
background-image: url("../img/Frame\ 1.png");
width: 100vw;
height: 100vh;
background-size: 100% 100%;
background-repeat: no-repeat;
position: relative;
/*filter: brightness(15%);*/
display: flex;
align-items: center;
justify-content: center;
z-index: 2;
}
.msg {
color: rgb(255, 255, 255);
font-size: 75px;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
}
span {
color: #007FFF;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
}
@media screen and (max-width: 1075px) {
.navbar_nav {
position: fixed;
display: flex;
align-items: center;
background-color: black;
justify-content: center;
z-index: 100;
}
.navbar_nav.active {
left: 0;
}
#logo {
margin-top: 10px;
height: 47px;
width: 169px;
}
.cat {
text-decoration: none;
color: rgb(255, 255, 255);
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
font-size: 20px;
padding: 12px;
width: 25%;
text-align: center;
display: none;
margin: 2.5rem 0;
}
.social-media {
display: none;
}
.social-icon {
display: none;
}
.hamburger {
display: block;
cursor: pointer;
color: white;
padding-right: 9%;
}
.hamburger.active .bar:nth-child(2) {
opacity: 0;
}
.hamburger.active .bar:nth-child(1) {
transform: translateY(8px) rotate(45deg);
}
.hamburger.active .bar:nth-child(3) {
transform: translateY(-8px) rotate(-45deg);
}
.bar {
display: block;
width: 25px;
height: 3px;
margin: 5px auto;
-webkit-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
background-color: #007FFF;
}
}
@media screen and (max-width: 600px) {
.msg {
color: rgb(255, 255, 255);
font-size: 55px;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
justify-content: center;
text-align: center;
}
span {
color: #007FFF;
font-family: Impact, Haettenschweiler, 'Arial Narrow Bold', sans-serif;
justify-content: center;
text-align: center;
}
}
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Urban Web Solutions</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<!--LA PARTIE CONCERNANT LA NAVBAR-->
<nav id="navbar" class="navbar">
<a class="navbar_brand" href="index.html"><img id="logo" src="img/logo.png" alt=""></a>
<div class="container">
<ul class="navbar_nav">
<li ><a class="cat" href="index.html">ACCUEIL</a></li>
<li><a class="cat" href="#">NOTRE AGENCE</a></li>
<li><a class="cat" href="#services">NOS OFFRES</a></li>
<li><a class="cat" href="">NOUS CONTACTER</a></li>
</ul>
</div>
<div class="social-media">
<a href=""><img class="social-icon" src="img/fb.png" alt=""></a>
<a href=""><img class="social-icon" src="img/twitter_3256013.png" alt=""></a>
<a href=""><img class="social-icon" src="img/in.png" alt=""></a>
</div>
<div class="hamburger">
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</div>
</nav>
<!--FIN DE LA PARTIE CONCERNANT LA NAVBAR-->
<header>
<div id="backgroundimage">
<h1 class="msg">DÉVELOPPEUR <span class="auto-type"></span></h1>
</div>
</header>
<main>
</main>
<script src="https://unpkg.com/typed.js@2.0.16/dist/typed.umd.js"></script>
</body>
</html>