使用 HTML、CSS 和 Javascript 的响应式导航栏

2025-06-07

使用 HTML、CSS 和 Javascript 的响应式导航栏

对于我们构建的每个 CSS 项目,响应式导航栏是必备的。

所以,今天我们将使用 HTML CSS 和原始 javascript 构建一个响应式导航栏。

注意:这是移动优先的设计

如果你更喜欢视频,我也制作了一个视频。你可以在这里观看。

让我们开始吧🎉🎉

第 1 部分:HTML



<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="styles.css" />
    <title>responsive navbar</title>
  </head>
  <body>
    <header>
      <nav class="nav">
        <a href="/" class="logo">logo</a>

        <div class="hamburger">
          <span class="line"></span>
          <span class="line"></span>
          <span class="line"></span>
        </div>

        <div class="nav__link hide">
          <a href="#">home</a>
          <a href="#">about</a>
          <a href="#">contact</a>
          <a href="#">blog</a>
        </div>
      </nav>
    </header>
  </body>

  <script src="./script.js"></script>
</html>


Enter fullscreen mode Exit fullscreen mode

上面我们用汉堡包标记了导航栏。

我也链接了 CSS 和 javascript 文件。

让我们看看如何使用 CSS 来设计这个标记

第 2 部分 CSS



* {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

body {
  font-family: sans-serif;
}

a {
  text-decoration: none;
  color: black;
  font-size: 1.2rem;
  font-weight: bold;
  text-transform: uppercase;
}


Enter fullscreen mode Exit fullscreen mode

这里我们去掉了一些默认的样式,并在a标签中添加了一些样式。



/* nav styles */

.nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 20px;
}

.logo {
  font-size: 1.8rem;
  color: rgb(5, 5, 116);
  padding-left: 20px;
}

.hamburger {
  padding-right: 20px;
  cursor: pointer;
}

.hamburger .line {
  display: block;
  width: 40px;
  height: 5px;
  margin-bottom: 10px;
  background-color: black;
}

.nav__link {
  position: fixed;
  width: 94%;
  top: 5rem;
  left: 18px;
  background-color: lightblue;
}

.nav__link a {
  display: block;
  text-align: center;
  padding: 10px 0;
}

.nav__link a:hover {
  background-color: lightcoral;
}

.hide {
  display: none;
}


Enter fullscreen mode Exit fullscreen mode

这是主要设计。在这里,我们设计了导航栏的汉堡包样式和徽标。

移动设计已完成。

屏幕截图-127-0-0-1-5500-索引-html-2021-12-14-21_54_51.png

我们现在来看看桌面设计。



@media screen and (min-width: 600px) {
  .nav__link {
    display: block;
    position: static;
    width: auto;
    margin-right: 20px;
    background: none;
  }

  .nav__link a {
    display: inline-block;
    padding: 15px 20px;
  }

  .hamburger {
    display: none;
  }
}


Enter fullscreen mode Exit fullscreen mode

在桌面设计中,我们移除了绝对定位,并将其改为显示块。
此外,我们在 nav__link 中添加了 display inline-block 属性,使链接保持相邻。
最后,我们在 .hamburger 文件中添加了 display none 属性。

屏幕截图-127-0-0-1-5500-索引-html-2021-12-14-21_59_21.png

还剩最后一件事。现在我们需要让汉堡包可点击。

第 3 部分:JavaScript



const hamburger = document.querySelector('.hamburger');
const navLink = document.querySelector('.nav__link');

hamburger.addEventListener('click', () => {
  navLink.classList.toggle('hide');
});



Enter fullscreen mode Exit fullscreen mode

这里我们给汉堡包添加了点击事件,并给navLink添加了classList.toggle。

classList.toggle 的作用是,如果给定的类可用,则删除该类;如果给定的类不可用,则添加该类。

源代码:https://github.com/Coderamrin/responsive-navbar-css-js

实时预览:https://coderamrin.github.io/responsive-navbar-css-js/

结论

谢谢阅读。

如果你喜欢它,别忘了关注我@coderamrin

另外,我开通了一个 YouTube 频道,分享编程教程和视频。如果觉得不错,可以看看:https://www.youtube.com/channel/UCiHUi4wJ6rkPSQ5n4bxKU1A

祝你一切顺利 :D

文章来源:https://dev.to/coderamrin/responsive-navbar-using-html-css-and-javascript-1jo4
PREV
Vs Code 多光标 Visual Studio Code 中的多光标
NEXT
如何使用 React 和 Tailwind CSS 构建作品集网站