欢迎阅读有关如何创建简单的响应式纯 CSS 汉堡菜单的教程。是的,互联网上有很多其他的汉堡菜单,但其中一些仍然需要使用 Javascript。所以这里是一个纯 CSS 驱动的菜单,而不是一行 Javascript。继续阅读以了解如何构建一个!

ⓘ 我在本教程开始时包含了一个包含所有源代码的 zip 文件,因此您不必复制粘贴所有内容……或者如果您只是想直接进入。

下载和演示

首先,这是承诺的示例代码的下载链接。

示例代码下载

单击此处下载源代码,我已在 MIT 许可下发布它,因此请随意在其上构建或在您自己的项目中使用它。

汉堡菜单演示

前进。调整窗口大小并查看正在运行的汉堡菜单。

如何制作汉堡菜单

在现代 CSS 的帮助下,如今构建汉堡菜单实际上并不难……

第 1 步)HTML

index.html
<!-- (A) MENU WRAPPER -->
<nav id="hamnav"><!-- (B) THE HAMBURGER --><label for="hamburger">&#9776;</label><input type="checkbox" id="hamburger"/><!-- (C) MENU ITEMS --><div id="hamitems"><a href="a.html">First</a><a href="b.html">Second</a><a href="c.html">Third</a><a href="d.html">Forth</a></div>
</nav>

HTML 部分应该非常简单:

  1. 首先,我们为导航菜单创建包装器<nav id="hamnav">
  2. 随后使用<label for="hamburger"><input type="checkbox" id="hamburger"/>作为汉堡包按钮。对于新手来说,这&#9776;就是“3 行汉堡图标”的 HTML 符号。
  3. 最后,我们将菜单项夹<a>在  <div id="hamitems">包装器中。

就是这样,涉及零 Javascript。

步骤 2) 大屏幕的 CSS

ham-menu.css
/* [ON BIG SCREEN] */
/* (A) WRAPPER */
#hamnav {width: 100%;background: #000;
}/* (B) HORIZONTAL MENU ITEMS */
#hamitems { display: flex; }
#hamitems a {flex-grow: 1;flex-basis: 0;padding: 10px;color: white;text-decoration: none;text-align: center;
}
#hamitems a:hover { background: #af0d0d; }/* (C) HIDE HAMBURGER */
#hamnav label, #hamburger { display: none; }

CSS 是所有魔法发生的地方。这可能看起来有点复杂,但让我们一步一步来。从如何在大屏幕上显示“普通菜单栏”开始:

  1. 不言自明的全宽导航菜单。
  2. 接下来,我们设置#hamitemsdisplay: flex。将flex-grow: 1和添加flex-basis: 0到菜单项将自动将它们平均间隔开。
  3. 由于我们不需要大屏幕上的汉堡图标,我们通过附加display: none#hamnav label和来隐藏它#hamburger

这实际上是大屏幕上所有重要的机制,我们现在有了一个可以工作的水平导航栏。

步骤 3) 小屏幕的响应式 CSS

ham-menu.css
/* [ON SMALL SCREENS] */
@media screen and (max-width: 768px){/* (A) BREAK INTO VERTICAL MENU */#hamitems a {box-sizing: border-box;display: block;width: 100%;border-top: 1px solid #333;}/* (B) SHOW HAMBURGER ICON */#hamnav label { display: inline-block; color: white;background: #a02620;font-style: normal;font-size: 1.2em;padding: 10px;}/* (C) TOGGLE SHOW/HIDE MENU */#hamitems { display: none; }#hamnav input:checked ~ #hamitems { display: block; }
}

最后,我们在小屏幕上添加一些样式更改来实现响应式魔法:

  1. 通过添加将水平菜单转换为垂直菜单#hamitems a { width: 100% }
  2. 用 显示汉堡包图标#hamnav label { display: inline-block }
    • 请特别注意——我们只展示了汉堡包labelcheckbox其余部分被隐藏了。
    • 当用户点击label.
  3. 有点令人困惑,但这就是魔法发生的地方。
    • 默认情况下,#hamitems { display: none; }将隐藏菜单项。
    • #hamnav input:checked ~ #hamitems { display: block; }checkbox用简单的英语 -选中 隐藏时显示菜单项。

有用的信息和链接

代码就是这样,这里有一些你可能会觉得有用的额外内容。

粘性菜单栏

当用户在您的网站上向下滚动时,是否希望菜单栏永久固定在屏幕顶部?只需将 a 添加position: sticky到导航栏,就可以了。

主题.css
#hamnav {position: sticky;top: 0;
}

但这可能会在小屏幕上引起更多问题,因此请明智地使用它。

更大的汉堡?

汉堡包图标是一个 HTML 符号。是的,更改大小就像设置一样简单label[for="hamburger"] { font-size: XX em }

我想要下拉项目!

这将不再“简单”,但请随时挑战自己……

  • 使用纯 CSS 的下拉菜单- Code Boxx
  • 多级下拉菜单?这更像是一个树形菜单- Code Boxx

兼容性检查

  • CSS Flexbox – CanIUse
  • CSS 兄弟选择器- CanIUse

这个汉堡菜单适用于所有现代浏览器。

结束

感谢您的阅读,本教程到此结束。我希望它可以帮助您为您的项目创建更好的菜单系统,如果您对本指南有任何补充,请随时在下面发表评论。祝你好运,编码愉快!

纯 CSS 中的简单响应式汉堡菜单相关推荐

  1. html5彩盒插件画廊,纯JS开发baguetteBox.js响应式画廊插件

    baguetteBox.js 是一个简单和易于使用的响应式的图像 Lightbox 插件,支持滑动手势在移动设备上使用.纯 JavaScript 实现,不依赖第三方库和插件,赶紧来体验吧. 好了,看下 ...

  2. html简单响应式滚动条置顶

    简单响应式滚动条置顶 一般的,让页面出现滚动条的常见方法有: overflow:auto||overflow:scroll 或者overflow-x水平滚动条和overflow-y垂直滚动条 那么现在 ...

  3. 响应式多级菜单 侧边菜单栏_使用纯HTML和OmniFaces构建动态响应的多级菜单

    响应式多级菜单 侧边菜单栏 最近,我不得不使用JSF 2.2创建一个响应式多级菜单. 要求:菜单应: 从后端使用动态结构创建 React灵敏,例如对桌面和移动设备友好 有带有导航链接的子菜单项 支持触 ...

  4. 【前端实例代码】如何使用 HTML 和 CSS 快速创建一个响应式导航栏

    效果图: 大屏: 小屏: bilibili在线视频演示地址: [前端实例代码]如何使用 HTML 和 CSS 快速创建一个响应式导航栏nav_哔哩哔哩_bilibili完整代码在这里:https:// ...

  5. UI设计中如何做响应式设计与自适应设计

    UI设计中如何做响应式设计与自适应设计?由于科技在不断的发展,小伙伴们上网就不单单只依靠台式电脑了,还有平板电脑笔记本电脑都是可供大家选择的.面对不同的屏幕分辨率网站是如何进行适配的呢?今天AAA教育 ...

  6. vue如何在style标签中使用data响应式数据?

    文章目录 一.面临到的需求? 二.如何在css中使用变量? 三.vue如何在style标签中使用data响应式数据? 一.面临到的需求? 首先我们知道css对应是有伪类的,如:hover, :acti ...

  7. Java制作二级导航菜单_纯CSS实现超简单的二级下拉导航菜单代码

    本文实例讲述了纯CSS实现超简单的二级下拉导航菜单代码.分享给大家供大家参考.具体如下: 这是一款纯CSS菜单,二级下拉导航效果,是最简洁的CSS导航菜单,兼容性也很棒,IE7/8.火狐等都支持,而且 ...

  8. 前端css弹性布局,响应式布局,多列布局

    前端css弹性布局,响应式布局,多列布局 主页 <!DOCTYPE html> <html><head><meta charset="utf-8&q ...

  9. 响应式滑动菜单_如何创建响应式滑动菜单

    响应式滑动菜单 by Prashant Yadav 通过Prashant Yadav 如何创建响应式滑动菜单 (How to create a responsive sliding menu) I r ...

最新文章

  1. python字典生成式_【IT专家】Python 简化for循环:列表,集合与字典生成式
  2. [刷题]算法竞赛入门经典 3-10/UVa1587 3-11/UVa1588
  3. 世安杯CTF writeup
  4. IPC--三---共享内存
  5. MD5,SHA-1,SHA-256摘要加解密
  6. 2.C#2.0之泛型(完成)
  7. linux ubuntu php7.0 安装 curl
  8. 齿轮刚度计算 matlab,数值积分求解齿轮刚度
  9. 量表类问卷影响关系研究(精读笔记1)SPSS
  10. 13.STC15W408AS单片机SPI
  11. linux怎么修改ftp虚拟用户账号密码,Linux下FTP虚拟账户配置
  12. python爬取qq音乐评论+jieba分词并统计词频+绘制词云并可视化数据
  13. 多款AGV模型3D图纸 零件图,装配图都有 潜伏式,搬运AGV,内部结构详细
  14. Vmware中Server配置静态IP地址
  15. Spring前一次定时任务没执行完,下次任务是否会执行
  16. 程序员全职接单一个月的感触
  17. 软考笔记——第七章--数据结构
  18. IC基础——FIFO
  19. Learning Generalisable Omni-Scale Representations for Person Re-Identification
  20. 【资料下载区】【iCore3相关代码、资料下载地址】更新日期2017/06/28

热门文章

  1. 【算法专题】数独问题详解
  2. 五子棋PVP项目总结
  3. 平台软件每日构建总结
  4. C++课堂笔记整理(STL) map2
  5. 兼容ios和android的ar,安卓又落后 这几款AR游戏只能iOS玩
  6. win7下安装配置theano详解
  7. SylixOS进化简史
  8. 佐切的第二天学习分享
  9. 区块链技术及应用概述
  10. C#WinForm 分屏教程合集