[英]Why don't my mobile menu items appear on click?
I made my first responsive navbar and everything is good but when it comes to mobile, when I click on the span I'm unable to view the navbar elements like HOME, ABOUT, etc...我制作了我的第一个响应式导航栏,一切都很好,但是当涉及到移动设备时,当我点击跨度时,我无法查看导航栏元素,如主页、关于等...
I used HTML , CSS , JavaScript我使用了 HTML 、 CSS 、 JavaScript
Now, The problem is with the CSS media query!!现在,问题出在 CSS 媒体查询上!!
So please help me in fixing this!!!所以请帮我解决这个问题!!!
Here are my codes...这是我的代码...
HTML HTML
<!doctype html>
<html lang="en">
<!-- HEAD OF HTML -->
<head>
<!-- Required Meta-tags -->
<meta charset="utf-8">
<meta content="width=device-width, initial-scale=1" name="viewport" />
<meta name="theme-color" content="#1C1C1C">
<meta name="description" content="">
<meta name="robots" content="index, follow">
<!-- External CSS files -->
<link rel="stylesheet" href="index_p.css">
<!-- External JavaScript files
<script src="index_p.js"></script> -->
<!-- Font Awesome -->
<script src="https://kit.fontawesome.com/5e64d08a4d.js"></script>
<!-- JQuery
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
JQuery Ajax
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> -->
<!-- Title -->
<title>Pytheo</title>
<!-- Logo (Favicon) -->
<link rel="icon" href="Logo.png" type="image/x-icon">
</head>
<body>
<!-- HEADER -->
<header>
<!-- NAVBAR -->
<div class="navbar">
<div class="logo">
<h3>Pytheo</h3>
</div>
<a class="span-btn">
<span></span>
<span></span>
<span></span>
</a>
<div class="navBar">
<a class="active" href="#">Home</a>
<a href="#">About</a>
<a href="#">Contact</a>
<a href="#">Author</a>
<span>
<a class="spec" href="#">Articles</a>
</span>
</div>
</div>
</header>
<!-- JAVASCRIPT FILES -->
<!-- JQuery -->
<!-- <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> -->
<!-- JQuery Ajax -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<!-- External JavaScript files -->
<script src="index_p.js"></script>
</body>
</html>
CSS CSS
/* IMPORTS */
@import url('https://fonts.googleapis.com/css?family=Roboto&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800;900&display=swap');
@import url('https://fonts.googleapis.com/css?family=Alex+Brush|Oleo+Script+Swash+Caps&display=swap');
@import url('https://fonts.googleapis.com/css?family=Ubuntu&display=swap');
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital@0;1&family=IBM+Plex+Sans+Condensed:ital@0;1&family=IBM+Plex+Sans:ital,wght@0,100;0,400;0,700;1,100;1,400;1,700&family=IBM+Plex+Serif:ital@0;1&display=swap');
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,500;0,600;0,700;1,500;1,600;1,700&display=swap');
/* VARIABLES */
:root {
/* COLORS */
/*Pure Mono*/
--light: #FFFFFF;
--black: #000000;
/*White*/
--primary: #FCFAFF;
--light-primary: #F7F5FA;
--dark-primary: #E4E1E7;
/*Secondary*/
--secondary: #F8FAF5;
--light-secondary: #F3F5F0;
--dark-secondary: #EEF0EB;
/*Grey*/
--light-grey: #D7D9D4;
--dark-grey: #C1BFC4;
/*Dark*/
--dark: #121212;
--light-dark: #505050;
--mid-dark: #323232;
/*Gradient*/
--grad-cyan: #00C6FF;
--grad-blue: #0072FF;
/*Accent*/
--ac-cyan: #00C6FF;
--ac-ltcyan: #52d8ff;
--ac-dkcyan: #007091;
--ac-blue: #0072FF;
--ac-ltblue: #308cff;
--ac-dkblue: #004191;
}
/*___________________________________________________________
HTML Style Configuration
__________________________________________________________*/
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html { scroll-behavior: smooth; }
body {
background: var(--primary);
width: 100%;
/*overflow-wrap: break-word;*/
}
/*___________________________________________________________
Navbar Styling
_____________________________________________________________*/
.navbar {
position: relative;
height: 70px;
top: 0;
width: 100%;
overflow: hidden;
display: flex;
align-items: center;
background: var(--light-primary);
}
.logo {
margin-left: 90px;
font-size: 25px;
/*font-family: 'Oleo Script Swash Caps', cursive;*/
font-family: 'Poppins', sans-serif;
text-transform: uppercase;
color: var(--grad-blue);
float: left;
cursor: pointer;
}
.navBar {
position: absolute;
float: right;
right: 80px;
}
.navbar .navBar .active {
background: linear-gradient(to bottom right, #00C6FF, #0072FF);
padding: 6px;
color: var(--light);
/*box-shadow: 0.5px 0.5px 1px var(--ac-cyan);*/
box-shadow: 1px 1px 1px var(--ac-cyan);
}
.navbar .navBar .active:hover {
background: linear-gradient(to bottom right, #00C6FF, #0072FF);
padding: 6px;
color: var(--light);
}
.navbar .navBar span {
margin-left: 8px;
}
.navbar .navBar .spec {
color: var(--light);
/*background: linear-gradient(to bottom right, var(--ac-ltblue), var(--ac-ltcyan));*/
background: var(--ac-blue);
border: none;
border-radius: 10px;
font-size: 14px;
padding: 11px;
margin-left: 16px;
text-transform: uppercase;
box-shadow: 1px 1px 2px var(--ac-cyan);
}
.navbar .navBar .spec:hover {
background: linear-gradient(to bottom right, var(--ac-ltcyan), var(--ac-ltblue));
transition: 0.6s;
}
.navbar .navBar .spec:active {
background: linear-gradient(45deg, var(--ac-dkcyan), var(--ac-dkblue));
}
.navBar a {
color: var(--ac-blue);
margin-left: 20px;
font-size: 0.9em;
text-decoration: none;
font-family: 'Lato', sans-serif;
font-weight: 700;
text-transform: uppercase;
cursor: pointer;
padding: 6px;
}
.navBar a:hover {
background: linear-gradient(to bottom right, var(--grad-cyan), var(--grad-blue));
transition: 0.1s linear;
color: var(--light);
box-shadow: 1px 1px 1px var(--ac-cyan);
}
.navBar a:active {
background: linear-gradient(45deg, var(--ac-ltcyan), var(--ac-ltblue));
/*transition: 0.1s linear;*/
}
.span-btn {
display: none;
position: absolute;
right: 20px;
}
.span-btn:hover > span {
background: var(--ac-ltcyan);
}
.span-btn span {
display: block;
margin: 7px;
width: 40px;
height: 3px;
background: var(--ac-ltblue);
}
@media only screen and (max-width: 840px)
{ .logo {
margin-left: 20px;
margin-right: 50px;
font-size: 30px;
font-family: 'Oleo Script Swash Caps', cursive;
float: left;
cursor: pointer;
}
.navbar {
overflow: auto;
height: 70px;
top: 0;
width: 100%;
margin-left: 3px;
margin-right: 10px;
margin-top: 10px;
display: flex;
align-items: center;
background: var(--secondary);
border-radius: 4px;
}
.navBar {
width: 100%;
right: 0;
top: 80px;
background: var(--secondary);
overflow: hidden;
max-height: 0;
}
.navBar a {
display: block;
text-align: center;
padding: 12px;
margin: 0;
}
.span-btn {
display: block;
cursor: pointer;
}
.show {
max-height: 510px;
}
}
JavaScript JavaScript
$(".span-btn").on("click", function() {
$('.navbar').toggleClass("show");
});
Your JavaScript is referencing $(".span-button")
which doesn't exist in the HTML.您的 JavaScript 正在引用 HTML 中不存在的$(".span-button")
。
Rename $(".span-button")
to $(".span-btn")
in your JavaScript.在 JavaScript 中将$(".span-button")
重命名$(".span-button")
$(".span-btn")
。
"$ is not defined" that means $ is either a variable or a method which you are trying to use before declaring it using var keyword. “$ 未定义”表示 $ 是变量或方法,您在使用 var 关键字声明它之前尝试使用它。
you should link jQuery before linking your external js file because if u did the opposite "Which you have done on your code" that will cause "$ is not defined" problem and I recommend you to add the js files at the end of the body so u don't face that error but if u didnt add the files at the end of the body u can use that code :你应该在链接你的外部 js 文件之前链接 jQuery 因为如果你做了相反的“你对你的代码做了什么”会导致“$未定义”问题,我建议你在正文的末尾添加 js 文件所以你不会遇到那个错误,但如果你没有在正文末尾添加文件,你可以使用该代码:
Try this html code :试试这个 html 代码:
<!doctype html> <html lang="en"> <head> <!-- Required Meta-tags --> <meta charset="utf-8"> <meta content="width=device-width, initial-scale=1" name="viewport" /> <meta name="theme-color" content="#1C1C1C"> <meta name="description" content=""> <meta name="robots" content="index, follow"> <!-- External CSS files --> <link rel="stylesheet" href="index_p.css"> <!-- Font Awesome --> <script src="https://kit.fontawesome.com/5e64d08a4d.js"></script> <!-- Title --> <title>Pytheo</title> <!-- Logo (Favicon) --> <link rel="icon" href="#" type="image/x-icon"> </head> <body> <header> <div class="navbar"> <div class="logo"> <h3>Pytheo</h3> </div> <a class="span-btn"> <span></span> <span></span> <span></span> </a> <div class="navBar"> <a class="active" href="#">Home</a> <a href="#">About</a> <a href="#">Contact</a> <a href="#">Author</a> <span> <a class="spec" href="#">Articles</a> </span> </div> </div> </header> <!-- JQuery --> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <!-- JQuery Ajax --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- External JavaScript files --> <script src="index_p.js"></script> </body> </html>
you should use this if u imported your external JS at the header:如果您在标题中导入了外部 JS,则应该使用它:
$(document).ready(function(){ $(".span-button").on("click", function() { $('.navbar').toggleClass("show"); }); });
You are loading 'index_p.js' before your JQuery.您正在 JQuery 之前加载“index_p.js”。 JQuery must be loaded first.必须先加载 JQuery。
For your CSS error try this code :对于您的 CSS 错误,请尝试以下代码:
$(".span-btn").on("click", function() { $('.navBar').toggleClass("show"); });
/* IMPORTS */ @import url('https://fonts.googleapis.com/css?family=Roboto&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;600;700;800;900&display=swap'); @import url('https://fonts.googleapis.com/css?family=Alex+Brush|Oleo+Script+Swash+Caps&display=swap'); @import url('https://fonts.googleapis.com/css?family=Ubuntu&display=swap'); @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital@0;1&family=IBM+Plex+Sans+Condensed:ital@0;1&family=IBM+Plex+Sans:ital,wght@0,100;0,400;0,700;1,100;1,400;1,700&family=IBM+Plex+Serif:ital@0;1&display=swap'); @import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:ital,wght@0,500;0,600;0,700;1,500;1,600;1,700&display=swap'); /* VARIABLES */ :root { /* COLORS */ /*Pure Mono*/ --light: #FFFFFF; --black: #000000; /*White*/ --primary: #FCFAFF; --light-primary: #F7F5FA; --dark-primary: #E4E1E7; /*Secondary*/ --secondary: #F8FAF5; --light-secondary: #F3F5F0; --dark-secondary: #EEF0EB; /*Grey*/ --light-grey: #D7D9D4; --dark-grey: #C1BFC4; /*Dark*/ --dark: #121212; --light-dark: #505050; --mid-dark: #323232; /*Gradient*/ --grad-cyan: #00C6FF; --grad-blue: #0072FF; /*Accent*/ --ac-cyan: #00C6FF; --ac-ltcyan: #52d8ff; --ac-dkcyan: #007091; --ac-blue: #0072FF; --ac-ltblue: #308cff; --ac-dkblue: #004191; } /*___________________________________________________________ HTML Style Configuration __________________________________________________________*/ * { box-sizing: border-box; margin: 0; padding: 0; } html { scroll-behavior: smooth; } body { background: var(--primary); width: 100%; /*overflow-wrap: break-word;*/ } /*___________________________________________________________ Navbar Styling _____________________________________________________________*/ .navbar { position: relative; height: 70px; top: 0; width: 100%; overflow: hidden; display: flex; align-items: center; background: var(--light-primary); } .logo { margin-left: 90px; font-size: 25px; /*font-family: 'Oleo Script Swash Caps', cursive;*/ font-family: 'Poppins', sans-serif; text-transform: uppercase; color: var(--grad-blue); float: left; cursor: pointer; } .navBar { position: absolute; float: right; right: 80px; } .navbar .navBar .active { background: linear-gradient(to bottom right, #00C6FF, #0072FF); padding: 6px; color: var(--light); /*box-shadow: 0.5px 0.5px 1px var(--ac-cyan);*/ box-shadow: 1px 1px 1px var(--ac-cyan); } .navbar .navBar .active:hover { background: linear-gradient(to bottom right, #00C6FF, #0072FF); padding: 6px; color: var(--light); } .navbar .navBar span { margin-left: 8px; } .navbar .navBar .spec { color: var(--light); /*background: linear-gradient(to bottom right, var(--ac-ltblue), var(--ac-ltcyan));*/ background: var(--ac-blue); border: none; border-radius: 10px; font-size: 14px; padding: 11px; margin-left: 16px; text-transform: uppercase; box-shadow: 1px 1px 2px var(--ac-cyan); } .navbar .navBar .spec:hover { background: linear-gradient(to bottom right, var(--ac-ltcyan), var(--ac-ltblue)); transition: 0.6s; } .navbar .navBar .spec:active { background: linear-gradient(45deg, var(--ac-dkcyan), var(--ac-dkblue)); } .navBar a { color: var(--ac-blue); margin-left: 20px; font-size: 0.9em; text-decoration: none; font-family: 'Lato', sans-serif; font-weight: 700; text-transform: uppercase; cursor: pointer; padding: 6px; } .navBar a:hover { background: linear-gradient(to bottom right, var(--grad-cyan), var(--grad-blue)); transition: 0.1s linear; color: var(--light); box-shadow: 1px 1px 1px var(--ac-cyan); } .navBar a:active { background: linear-gradient(45deg, var(--ac-ltcyan), var(--ac-ltblue)); /*transition: 0.1s linear;*/ } .span-btn { display: none; position: absolute; right: 20px; } .span-btn:hover > span { background: var(--ac-ltcyan); } .span-btn span { display: block; margin: 7px; width: 40px; height: 3px; background: var(--ac-ltblue); } @media only screen and (max-width: 840px) { .logo { margin-left: 20px; margin-right: 50px; font-size: 30px; font-family: 'Oleo Script Swash Caps', cursive; float: left; cursor: pointer; } .navbar { overflow:visible; height: 70px; top: 0; width: 100%; margin-left: 3px; margin-right: 10px; margin-top: 10px; display: flex; align-items: center; background: var(--secondary); border-radius: 4px; } .navBar { display:none; width: 100%; right: 0; top: 80px; background: var(--secondary); /* max-height: 0; */ } .navBar a { display: block; text-align: center; padding: 12px; margin: 0; } .span-btn { display: block; cursor: pointer; } .show { max-height: 510px; display:block; } }
<html lang="en"> <head> <!-- Required Meta-tags --> <meta charset="utf-8"> <meta content="width=device-width, initial-scale=1" name="viewport" /> <meta name="theme-color" content="#1C1C1C"> <meta name="description" content=""> <meta name="robots" content="index, follow"> <!-- External CSS files --> <link rel="stylesheet" href="index_p.css"> <!-- Font Awesome --> <script src="https://kit.fontawesome.com/5e64d08a4d.js"></script> <!-- Title --> <title>Pytheo</title> <!-- Logo (Favicon) --> <link rel="icon" href="#" type="image/x-icon"> </head> <body> <header> <div class="navbar"> <div class="logo"> <h3>Pytheo</h3> </div> <a class="span-btn"> <span></span> <span></span> <span></span> </a> <div class="navBar"> <a class="active" href="#">Home</a> <a href="#">About</a> <a href="#">Contact</a> <a href="#">Author</a> <span> <a class="spec" href="#">Articles</a> </span> </div> </div> </header> <!-- JQuery --> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <!-- JQuery Ajax --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <!-- External JavaScript files --> <script src="index_p.js"></script> </body> </html>
The error was here : .navbar { overflow: auto; .navbar { position: fixed;
错误在这里: .navbar { overflow: auto; .navbar { position: fixed;
.navbar { overflow: auto; .navbar { position: fixed;
. .
You opened two selectors with the same name and didn't close it.你打开了两个同名的选择器,但没有关闭它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.