当前位置:首页 » 《我的小黑屋》 » 正文

「零基础」前端教程:手把手教你制作简洁美观的响应式导航栏(附完整源码) HTML+CSS+JS 实战:5分钟搭建一个新手友好的响应式导航栏 前端新手必看!一步步打造你的第一个移动端自适应导航栏(详细源

28 人参与  2024年10月06日 17:20  分类 : 《我的小黑屋》  评论

点击全文阅读


创建一个响应式导航栏(完整代码在后面)

响应式导航栏效果图:
在这里插入图片描述

在这里插入图片描述


目录

步骤 一、新建一个 HTML 项目二、创建基本结构三、使用 CSS 美化页面四、添加交互功能 完整代码结语

步骤

在 Web 开发中,导航栏是网站中非常重要的组成部分。一个简洁、美观、响应式的导航栏可以提升用户体验。今天,我们将一起学习如何使用 HTMLCSSJavaScript(不使用任何框架)来构建一个响应式的导航栏,实现移动端的菜单折叠和展开功能。


一、新建一个 HTML 项目

首先,创建一个新的 HTML 文件,命名为 index.html。你可以使用任何代码编辑器,如 VSCodeSublime TextNotepad++

<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="UTF-8">    <title>响应式导航栏示例</title></head><body></body></html>

二、创建基本结构

<body> 标签中,添加导航栏的基本结构,包括 Logo、导航菜单和移动端的菜单按钮。

<body>    <header>        <nav class="navbar">            <div class="logo">My Website</div>            <ul class="nav-links">                <li><a href="#">首页</a></li>                <li><a href="#">关于我们</a></li>                <li><a href="#">服务</a></li>                <li><a href="#">联系</a></li>            </ul>            <div class="menu-icon" id="menu-icon">                <span></span>                <span></span>                <span></span>            </div>        </nav>    </header></body>
.logo:网站的 Logo 或名称。.nav-links:导航链接列表。.menu-icon:移动端的菜单按钮(汉堡菜单)。

三、使用 CSS 美化页面

<head> 标签中,添加 <style> 标签,编写导航栏的样式。

<head>    <meta charset="UTF-8">    <title>响应式导航栏示例</title>    <style>        /* 重置样式 */        * {            margin: 0;            padding: 0;            box-sizing: border-box;        }        /* 导航栏样式 */        .navbar {            display: flex;            justify-content: space-between;            align-items: center;            background-color: #34495e;            padding: 10px 20px;            color: #ecf0f1;        }        .logo {            font-size: 24px;            font-weight: bold;        }        .nav-links {            list-style: none;            display: flex;        }        .nav-links li {            margin-left: 20px;        }        .nav-links a {            text-decoration: none;            color: #ecf0f1;            font-size: 18px;        }        .nav-links a:hover {            color: #bdc3c7;        }        /* 移动端菜单按钮 */        .menu-icon {            display: none;            flex-direction: column;            cursor: pointer;        }        .menu-icon span {            width: 25px;            height: 3px;            background-color: #ecf0f1;            margin: 4px;            transition: 0.3s;        }        /* 响应式设计 */        @media screen and (max-width: 768px) {            .nav-links {                position: fixed;                right: -100%;                top: 60px;                flex-direction: column;                background-color: #34495e;                width: 200px;                height: calc(100% - 60px);                transition: 0.3s;            }            .nav-links li {                margin: 20px 0;                text-align: center;            }            .menu-icon {                display: flex;            }        }        /* 菜单展开时的样式 */        .nav-active {            right: 0;        }    </style></head>
使用 @media 查询,实现响应式布局。在屏幕宽度小于 768px 时,导航菜单变为侧边栏,菜单按钮显示。

四、添加交互功能

为了实现点击菜单按钮时导航菜单的展开和收起,我们需要添加 JavaScript 代码。

<body> 底部,添加 <script> 标签,编写交互逻辑。

<body>    <!-- 上面的代码 -->    <!-- ... -->    <!-- JavaScript 部分 -->    <script>        const menuIcon = document.getElementById('menu-icon');        const navLinks = document.querySelector('.nav-links');        menuIcon.addEventListener('click', () => {            navLinks.classList.toggle('nav-active');            // 菜单动画            menuIcon.classList.toggle('toggle');        });    </script></body>

同时,为了实现菜单按钮的动画效果,更新 CSS 样式:

/* 菜单按钮动画 */.menu-icon.toggle span:nth-child(1) {    transform: rotate(-45deg) translate(-5px, 6px);}.menu-icon.toggle span:nth-child(2) {    opacity: 0;}.menu-icon.toggle span:nth-child(3) {    transform: rotate(45deg) translate(-5px, -6px);}

完整代码

将以上部分组合在一起,得到完整的代码:

<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="UTF-8">    <title>响应式导航栏示例</title>    <style>        /* 重置样式 */        * {            margin: 0;            padding: 0;            box-sizing: border-box;        }        /* 导航栏样式 */        .navbar {            display: flex;            justify-content: space-between;            align-items: center;            background-color: #34495e;            padding: 10px 20px;            color: #ecf0f1;        }        .logo {            font-size: 24px;            font-weight: bold;        }        .nav-links {            list-style: none;            display: flex;        }        .nav-links li {            margin-left: 20px;        }        .nav-links a {            text-decoration: none;            color: #ecf0f1;            font-size: 18px;        }        .nav-links a:hover {            color: #bdc3c7;        }        /* 移动端菜单按钮 */        .menu-icon {            display: none;            flex-direction: column;            cursor: pointer;        }        .menu-icon span {            width: 25px;            height: 3px;            background-color: #ecf0f1;            margin: 4px;            transition: 0.3s;        }        /* 响应式设计 */        @media screen and (max-width: 768px) {            .nav-links {                position: fixed;                right: -100%;                top: 60px;                flex-direction: column;                background-color: #34495e;                width: 200px;                height: calc(100% - 60px);                transition: 0.3s;            }            .nav-links li {                margin: 20px 0;                text-align: center;            }            .menu-icon {                display: flex;            }        }        /* 菜单展开时的样式 */        .nav-active {            right: 0;        }        /* 菜单按钮动画 */        .menu-icon.toggle span:nth-child(1) {            transform: rotate(-45deg) translate(-5px, 6px);        }        .menu-icon.toggle span:nth-child(2) {            opacity: 0;        }        .menu-icon.toggle span:nth-child(3) {            transform: rotate(45deg) translate(-5px, -6px);        }    </style></head><body>    <header>        <nav class="navbar">            <div class="logo">My Website</div>            <ul class="nav-links">                <li><a href="#">首页</a></li>                <li><a href="#">关于我们</a></li>                <li><a href="#">服务</a></li>                <li><a href="#">联系</a></li>            </ul>            <div class="menu-icon" id="menu-icon">                <span></span>                <span></span>                <span></span>            </div>        </nav>    </header>    <!-- JavaScript 部分 -->    <script>        const menuIcon = document.getElementById('menu-icon');        const navLinks = document.querySelector('.nav-links');        menuIcon.addEventListener('click', () => {            navLinks.classList.toggle('nav-active');            // 菜单动画            menuIcon.classList.toggle('toggle');        });    </script></body></html>

结语

通过本篇教程,我们学习了如何使用 HTMLCSSJavaScript 构建一个响应式的导航栏。这个导航栏在桌面端展示为水平菜单,在移动端则变为侧边栏菜单,并且包含了菜单按钮的动画效果。希望通过本次实践,大家对前端开发有了更深入的了解。


提示:在实际项目中,您可以根据需要,调整导航栏的样式,添加更多的菜单项,或者集成到您的网站中。

版权声明:本文为原创文章,转载请注明出处。


点击全文阅读


本文链接:http://zhangshiyu.com/post/168349.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1