菜单的动画有什么问题?
What's wrong with the animation for the menu?
好吧,基本上我必须用 HTML 为学校做一个互联网站点,但只有 javascript 动画,所有代码都可以正常工作,但是当我想转换我用于我的三行代码时汉堡菜单变成带有 javascript 动画的十字形 什么都没发生,我真的不知道为什么。
如果有人能帮助我,我将一如既往地感激不尽,感谢阅读。
<!doctype html>
<head>
<meta charset="utf-8">
<title>California Hotel</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
font-family: Arial, Helvetica, sans-serif;
}
.container{
width: 100%;
height: 100vh;
background-color: grey;
}
.navbar{
width: 300px;
height: 100%;
background-color: blanchedalmond;
position: fixed;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10% 0 0 5%;
}
.hamburger-menu{
width: 35px;
height: 30px;
position: fixed;
top: 50px;
right: 50px;
cursor: pointer;
display: flex;
flex-direction: column;
justify-content: space-around;
}
.line{
width: 100%;
height: 3px;
background-color: black;
}
.change .line-1{
transform: rotate(-45deg) translate(-8px,6px);
}
.change .line-2{
opacity: 0;
}
.change .line-3{
transform: rotate(45deg) translate(-8px,-6px);;
}
.nav-list{
text-align: right;
}
.nav-item{
list-style: none;
margin: 25px;
}
.nav-links{
text-decoration: none;
font-size: 20px;
color: rgb(22, 73, 73);
font-weight: 300;
letter-spacing: 1px;
text-transform: uppercase;
position: relative;
padding: 3px 0;
}
.nav-links::before,
.nav-links::after{
content: "";
width: 100%;
height: 2px;
background-color: orange;
position: absolute;
left: 0;
transform: scaleX(0);
transition: transform 0.5s;
}
.nav-links::after{
bottom: 0;
transform-origin: right;
}
.nav-links::before{
top: 0;
transform-origin: left;
}
.nav-links:hover::before,
.nav-links:hover::after{
transform: scaleX(1);
}
</style>
</head>
<body>
<div class="container">
<nav class="navbar">
<div class="hamburger-menu">
<div class="line line-1"></div>
<div class="line line-2"></div>
<div class="line line-3"></div>
</div>
<ul class="nav-list">
<li class="nav-item">
<a href="#" class="nav-links">A PROPOS</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOUS CONTACTER</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOS RESEAUX SOCIAUX</a>
</li>
</ul>
</nav>
</div>
<script>
const menuIcon = document.querySelector(".hamburger-menu");
const navbar = document.querySelector(".nabar");
MenuIcon.addEventListener("click",() => {
navbar.classList.toggle(".change")});
</script>
</body>
</html>
这是您的正确代码:
丢失的 ;并删除。在 javascript 代码中的 class 之前。祝你好运。
const MenuIcon = document.querySelector(".hamburger-menu");
const navbar = document.querySelector(".navbar");
MenuIcon.addEventListener("click", () => {
navbar.classList.toggle("change");
});
* {
margin: 0;
padding: 0;
}
body {
font-family: Arial, Helvetica, sans-serif;
}
.container {
width: 100%;
height: 100vh;
background-color: grey;
}
.navbar {
width: 300px;
height: 100%;
background-color: blanchedalmond;
position: fixed;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10% 0 0 5%;
}
.hamburger-menu {
width: 35px;
height: 30px;
position: fixed;
top: 50px;
right: 50px;
cursor: pointer;
display: flex;
flex-direction: column;
justify-content: space-around;
}
.line {
width: 100%;
height: 3px;
background-color: black;
}
.change .line-1 {
transform: rotate(-45deg) translate(-8px, 6px);
}
.change .line-2 {
opacity: 0;
}
.change .line-3 {
transform: rotate(45deg) translate(-8px, -6px);
;
}
.nav-list {
text-align: right;
}
.nav-item {
list-style: none;
margin: 25px;
}
.nav-links {
text-decoration: none;
font-size: 20px;
color: rgb(22, 73, 73);
font-weight: 300;
letter-spacing: 1px;
text-transform: uppercase;
position: relative;
padding: 3px 0;
}
.nav-links::before,
.nav-links::after {
content: "";
width: 100%;
height: 2px;
background-color: orange;
position: absolute;
left: 0;
transform: scaleX(0);
transition: transform 0.5s;
}
.nav-links::after {
bottom: 0;
transform-origin: right;
}
.nav-links::before {
top: 0;
transform-origin: left;
}
.nav-links:hover::before,
.nav-links:hover::after {
transform: scaleX(1);
}
<div class="container">
<nav class="navbar">
<div class="hamburger-menu">
<div class="line line-1"></div>
<div class="line line-2"></div>
<div class="line line-3"></div>
</div>
<ul class="nav-list">
<li class="nav-item">
<a href="#" class="nav-links">A PROPOS</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOUS CONTACTER</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOS RESEAUX SOCIAUX</a>
</li>
</ul>
</nav>
</div>
好吧,基本上我必须用 HTML 为学校做一个互联网站点,但只有 javascript 动画,所有代码都可以正常工作,但是当我想转换我用于我的三行代码时汉堡菜单变成带有 javascript 动画的十字形 什么都没发生,我真的不知道为什么。 如果有人能帮助我,我将一如既往地感激不尽,感谢阅读。
<!doctype html>
<head>
<meta charset="utf-8">
<title>California Hotel</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
font-family: Arial, Helvetica, sans-serif;
}
.container{
width: 100%;
height: 100vh;
background-color: grey;
}
.navbar{
width: 300px;
height: 100%;
background-color: blanchedalmond;
position: fixed;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10% 0 0 5%;
}
.hamburger-menu{
width: 35px;
height: 30px;
position: fixed;
top: 50px;
right: 50px;
cursor: pointer;
display: flex;
flex-direction: column;
justify-content: space-around;
}
.line{
width: 100%;
height: 3px;
background-color: black;
}
.change .line-1{
transform: rotate(-45deg) translate(-8px,6px);
}
.change .line-2{
opacity: 0;
}
.change .line-3{
transform: rotate(45deg) translate(-8px,-6px);;
}
.nav-list{
text-align: right;
}
.nav-item{
list-style: none;
margin: 25px;
}
.nav-links{
text-decoration: none;
font-size: 20px;
color: rgb(22, 73, 73);
font-weight: 300;
letter-spacing: 1px;
text-transform: uppercase;
position: relative;
padding: 3px 0;
}
.nav-links::before,
.nav-links::after{
content: "";
width: 100%;
height: 2px;
background-color: orange;
position: absolute;
left: 0;
transform: scaleX(0);
transition: transform 0.5s;
}
.nav-links::after{
bottom: 0;
transform-origin: right;
}
.nav-links::before{
top: 0;
transform-origin: left;
}
.nav-links:hover::before,
.nav-links:hover::after{
transform: scaleX(1);
}
</style>
</head>
<body>
<div class="container">
<nav class="navbar">
<div class="hamburger-menu">
<div class="line line-1"></div>
<div class="line line-2"></div>
<div class="line line-3"></div>
</div>
<ul class="nav-list">
<li class="nav-item">
<a href="#" class="nav-links">A PROPOS</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOUS CONTACTER</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOS RESEAUX SOCIAUX</a>
</li>
</ul>
</nav>
</div>
<script>
const menuIcon = document.querySelector(".hamburger-menu");
const navbar = document.querySelector(".nabar");
MenuIcon.addEventListener("click",() => {
navbar.classList.toggle(".change")});
</script>
</body>
</html>
这是您的正确代码: 丢失的 ;并删除。在 javascript 代码中的 class 之前。祝你好运。
const MenuIcon = document.querySelector(".hamburger-menu");
const navbar = document.querySelector(".navbar");
MenuIcon.addEventListener("click", () => {
navbar.classList.toggle("change");
});
* {
margin: 0;
padding: 0;
}
body {
font-family: Arial, Helvetica, sans-serif;
}
.container {
width: 100%;
height: 100vh;
background-color: grey;
}
.navbar {
width: 300px;
height: 100%;
background-color: blanchedalmond;
position: fixed;
top: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
border-radius: 10% 0 0 5%;
}
.hamburger-menu {
width: 35px;
height: 30px;
position: fixed;
top: 50px;
right: 50px;
cursor: pointer;
display: flex;
flex-direction: column;
justify-content: space-around;
}
.line {
width: 100%;
height: 3px;
background-color: black;
}
.change .line-1 {
transform: rotate(-45deg) translate(-8px, 6px);
}
.change .line-2 {
opacity: 0;
}
.change .line-3 {
transform: rotate(45deg) translate(-8px, -6px);
;
}
.nav-list {
text-align: right;
}
.nav-item {
list-style: none;
margin: 25px;
}
.nav-links {
text-decoration: none;
font-size: 20px;
color: rgb(22, 73, 73);
font-weight: 300;
letter-spacing: 1px;
text-transform: uppercase;
position: relative;
padding: 3px 0;
}
.nav-links::before,
.nav-links::after {
content: "";
width: 100%;
height: 2px;
background-color: orange;
position: absolute;
left: 0;
transform: scaleX(0);
transition: transform 0.5s;
}
.nav-links::after {
bottom: 0;
transform-origin: right;
}
.nav-links::before {
top: 0;
transform-origin: left;
}
.nav-links:hover::before,
.nav-links:hover::after {
transform: scaleX(1);
}
<div class="container">
<nav class="navbar">
<div class="hamburger-menu">
<div class="line line-1"></div>
<div class="line line-2"></div>
<div class="line line-3"></div>
</div>
<ul class="nav-list">
<li class="nav-item">
<a href="#" class="nav-links">A PROPOS</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOUS CONTACTER</a>
</li>
<li class="nav-item">
<a href="#" class="nav-links">NOS RESEAUX SOCIAUX</a>
</li>
</ul>
</nav>
</div>