【发布时间】:2020-02-09 16:44:44
【问题描述】:
我一直在尝试创建一个“在导航栏上滑动”的想法是我希望它可以滑动超过 100% 的页面宽度,不透明度设置为 0.7 左右,并将 2 行汉堡栏转换为一个十字架。
我已经成功创建了汉堡吧并对其进行了改造。当我单击它时,我无法关闭导航幻灯片!它也来自左侧,并希望它来自右侧!
我还不够熟练,无法完全理解 JavaScript 是如何工作的,以及这是否会干扰打开-关闭功能。另外,我不确定我最近做了什么,但它现在似乎完全消失了!
const menuBtn = document.querySelector('.menu-btn');
let menuOpen = false;
menuBtn.addEventListener('click', () => {
if (!menuOpen) {
menuBtn.classList.add('open');
menuOpen = true;
} else {
menuBtn.classList.remove('open');
menuOpen = false;
}
});
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background: white;
min-height: 100vh;
}
.menu-btn {
position: absolute;
top: 25px;
left: 95%;
width: 40px;
height: 40px;
cursor: pointer;
transition: all.5s ease-in-out;
z-index: 2;
}
.menu-btn-burger::before,
.menu-btn-burger::after {
content: '';
position: absolute;
width: 30px;
height: 3px;
background: black;
border-radius: 2px;
transition: all .5s ease-in-out;
}
.menu-btn-burger::after {
transform: translateY(16px);
}
.menu-btn.open .menu-btn-burger::before {
transform: rotate(45deg);
}
.menu-btn.open .menu-btn-burger::after {
transform: rotate(-45deg);
}
.logobrand {
height: 200px;
position: absolute;
top: 9%;
left: 4%;
z-index: 3;
}
.btn a {
padding: 5px;
}
.btn {
font-family: Montserrat;
font-weight: lighter;
font-size: 12px;
text-transform: uppercase;
text-decoration: none;
color: black;
position: absolute;
top: 2%;
right: 10%;
border: solid 1px black;
padding: 5px;
border-radius: 4px;
}
.btn:hover {
background-color: black;
transition: 1s;
opacity: 0.7;
color: white;
}
.work {
width: 100%;
height: 100%;
background-position: center;
background-size: cover;
background-repeat: no-repeat;
opacity: 0.7;
overflow-y: hidden;
}
.listitems {
position: absolute;
left: 70%;
top: 30%;
}
.side-nav {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: black;
opacity: 0.7;
overflow-x: hidden;
padding-top: 60px;
transition: 1s;
transform: translateX(99%);
}
.side-nav a {
padding: 10px 10px 10px 30px;
text-decoration: none;
font-size: 30px;
color: white;
display: block;
transition: 0.5s;
font-family: Montserrat;
list-style: none;
}
.side-nav a:hover {
color: silver;
}
.side-nav .btn-close {
position: absolute;
top: 0;
left: 0px;
}
a li {
width: 220px;
}
.instagram {
height: 35px;
padding: 5px;
}
.facebook {
height: 35px;
padding: 5px;
}
.twitter {
height: 35px;
padding: 5px;
}
.linkedin {
height: 35px;
padding: 5px;
}
.social {
position: absolute;
top: 95%;
left: 88%;
display: block;
}
.copy {
text-align: center;
font-family: Montserrat;
}
<link rel="stylesheet" href="https://unpkg.com/aos@next/dist/aos.css" />
<video class="work" autoplay loop muted src="img/Video.mov"></video>
<nav class="navbar">
<span class="open-slide">
<a href="#" onclick="openSlideMenu()">
<div class="menu-btn" onclick="show()">
<div class="menu-btn-burger"></div>
</div>
</a>
</span>
</nav>
<a class="btn" href="#">
<h3>Request a Quote</h3>
</a>
<div id="side-menu" class="side-nav">
<a href="#" class="btn-close" onclick="closeSlideMenu()">
<div class="menu-btn" onclick="show()">
<div class="menu-btn-burger"></div>
</div>
<div class="listitems">
<a href="#">
<li>Who we are</li>
</a>
<a href="#">
<li>What we offer</li>
</a>
<a href="#">
<li>How can we help?</li>
</a>
<a href="#">
<li>Chat to us</li>
</a>
</div>
</a>
</div>
<div class="logo"><img class="logobrand" src="img/Chatting Creative logo.png" alt=""></div>
<div class="social">
<img class="instagram" src="img/1t.png" alt="">
<img class="facebook" src="img/2t.png" alt="">
<img class="twitter" src="img/3t.png" alt="">
<img class="linkedin" src="img/4t.png" alt="">
</div>
<footer>
<p class="copy">
© Chatting Creative 2020
</p>
</footer>
<script>
function openSlideMenu() {
document.getElementById('side-menu').style.width = '100%';
document.getElementById('main').style.marginLeft = '250px';
}
function closeSlideMenu() {
document.getElementById('side-menu').style.width = '0px';
document.getElementById('main').style.marginLeft = '0px';
}
</script>
<script src="https://unpkg.com/aos@next/dist/aos.js"></script>
<script>
AOS.init();
</script>
【问题讨论】:
-
您能否将示例简化为工作 minimal reproducible example(删除与问题不直接相关的任何内容)。
-
<a>锚点内不能有其他动作元素。 -
在
<span>中放置<div>是无效的标记,在<a>中放置<li>元素也是无效的。 LI 的父级应该是 UL 或 OL
标签: javascript html css navbar