为什么我的文本和 div 框显示在我的 navbar/hamburger 菜单中而不是页面底部?

Why is my text and div boxes showing in my navbar/hamburger menu rather than the bottom of the page?

这是我第一次 post 在这里,如果格式不正确,我深表歉意。

我正在使用 HTML、CSS 和一点点 JavaScript 制作网站;我正在创建主页。在该页面中,我创建了一个汉堡菜单,当它打开时,您可以看到“主页”、“联系人”、“功能”等列表。那部分非常好。

然后我想在视频下方添加一些内容框。我的代码是正确的;然而,当我进入我的网站时,我看不到我创建的任何框,但是当我打开汉堡菜单时,我看到框和文本在那里。

我怎样才能让它不在菜单中,而是在底部?请帮忙。

我附上了一张图片来展示它的外观:

const menuToggle = document.querySelector('.toggle')
const showCase = document.querySelector('.showcase')

menuToggle.addEventListener('click', () => {
  menuToggle.classList.toggle('active')
  showCase.classList.toggle('active')
})
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@200;300;400;500;600;700;800&display=swap');
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Poppins', sans-serif;
}

.showcase {
  position: absolute;
  right: 0;
  width: 100%;
  min-height: 100vh;
  padding: 100px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: black;
  color: white;
  z-index: 2;
  transition: 0.8s;
}

.showcase header {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  padding: 40px 100px;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.logo {
  text-transform: uppercase;
  cursor: pointer;
}

.toggle {
  position: relative;
  width: 60px;
  height: 60px;
  background: url('menu.png');
  background-repeat: no-repeat;
  background-size: 30px;
  background-position: center;
  cursor: pointer;
}

.toggle.active {
  background: url('menu.png');
  background-repeat: no-repeat;
  background-size: 25px;
  background-position: center;
}

.showcase video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0.8;
}

.showcase.active {
  right: 300px;
}

.overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: #03a9f4;
  mix-blend-mode: overlay;
}

.text {
  position: relative;
  z-index: 10;
}

.text small {
  font-size: 30px;
  line-height: 1em;
}

.text h1 {
  font-size: 3em;
  font-weight: 700;
  line-height: 1em;
}

.text a {
  display: inline-block;
  font-size: 1em;
  background: white;
  padding: 10px 30px;
  text-decoration: none;
  color: black;
  margin-top: 10px;
  text-transform: uppercase;
  letter-spacing: 2px;
  transition: 0.3s;
}

.text a:hover {
  letter-spacing: 6px;
}

.social {
  position: absolute;
  bottom: 20px;
  z-index: 10;
  display: flex;
  justify-content: center;
  align-items: center;
}

.social li {
  list-style: none;
}

.social li a {
  display: inline-block;
  filter: invert(1);
  margin-right: 20px;
  transform: scale(0.7);
  transition: 0.5s;
}

.social li a:hover {
  transform: scale(0.5) translateY(-20px);
}

.menu {
  position: absolute;
  top: 0;
  right: 0;
  width: 300px;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

.menu ul {
  position: relative;
  list-style: none;
}

.menu ul li a {
  text-decoration: none;
  font-size: 25px;
  color: black;
}

.menu ul li a:hover {
  color: #03a9f4;
}

@media(max-width: 991px) {
  .showcase,
  .showcase header {
    padding: 40px;
  }
  .text small {
    font-size: 20px;
  }
  .text h1 {
    font-size: 2em;
  }
}

.boxes .container {
  display: flex;
  justify-content: space-between;
}

.box {
  flex: 1;
  background: #0a51cc;
  color: white;
  border-radius: 10px;
  margin: 20px 10px;
  box-shadow: 0 3px 5px black;
  padding: 15px 20px;
}

@media (max-width: 768px) {
  .header .container {
    flex-direction: column;
    padding-top: 20px;
    text-align: center;
  }
  .boxes .container {
    display: block;
    text-align: center;
  }
}
<section class="showcase">
  <header>
    <h2 class="logo">Blizzard Notify</h2>
    <div class="toggle"></div>
  </header>

  <video src="snow.mp4" muted loop autoplay></video>

  <div class="overlay"></div>

  <div class="text">
    <small>Welcome to Blizzard Notify</small>
    <h1>A discord server.</h1>
    <a href="#">Explore</a>
  </div>

  <ul class="social">
    <li>
      <a href="#"><img src="instagramlogo.png"></a>
    </li>
    <li>
      <a href="#"><img src="twitterlogo.png"></a>
    </li>
  </ul>
</section>

<div class="menu">
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">Features</a></li>
    <li><a href="#">Testimonials</a></li>
    <li><a href="#">FAQ</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</div>

<br>
<br>

<h1 id="features">
  Features
</h1>

<section class="boxes">
  <div class="container">
    <div class="box">
      <h2>Detailed Guides</h2>
      <p>Dummy Text</p>
    </div>

    <div class="box">
      <h2>Raffles</h2>
      <p>Dummy Text for Now.</p>
    </div>

    <div class="box">
      <h2>Lowkey Flips</h2>
      <p>Dummy Text for now.</p>
    </div>
  </div>
</section>

我试图摆脱 JavaScript,但没有帮助;我还尝试在元素之间添加一些 space 但没有任何反应。然后我试着看看我的 CSS 是否有误,但一切似乎都很好。我真的不知道我做错了什么。

position: relative 属性 添加到您的 .boxes div 可以解决问题,因为它通过文档的正常流向元素提供位置。

在您的 CSS 中,您没有为 .boxes 容器分配任何内容,因此默认情况下它设置为 static,导致了您的问题。

body{
    overflow-y: "scroll"; (this is optional.)
}
...
.boxes{
     position: relative
}
...

此外,我注意到您使用内联 <script>。为了获得最佳实践,请确保它位于 <body> 的末尾以提高性能。

检查代码笔的效果。 https://codepen.io/anthonyzhang220/pen/PoEOebw