本教程将指导您如何仅使用HTML、CSS和少量JavaScript代码构建一个响应式侧边导航栏菜单。该侧边栏将具备以下功能:
移动设备上的切换按钮,用于打开和关闭侧边栏。
桌面设备上可折叠的菜单,可在展开视图和图标视图之间切换。
我们将分三个主要步骤完成:构建HTML结构创建侧边栏的基础,使用CSS进行样式设计以确保布局在视觉上吸引人且具有响应性,最后使用JavaScript添加交互性,实现视图之间的动态切换。
1. HTML结构
首先,定义页面的基本结构,包括侧边栏(sidenav)、切换按钮和内容区域:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>响应式侧边导航栏</title> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css"> <link rel="stylesheet" href="styles.css"> </head> <body> <button class="toggle"><i class="fa fa-bars"></i></button> <nav id="sidenav"> <ul> <li><a href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b"><i class="fa fa-home"></i> 首页</a></li> <li><a href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b"><i class="fa fa-envelope"></i> 消息</a></li> <li><a href="https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b"><i class="fa fa-cog"></i> 设置</a></li> </ul> </nav> <main> <h1>欢迎</h1> <p>Lorem ipsum dolor sit amet...</p> </main> <script src="script.js"></script> </body> </html>
解释:
元素包含侧边栏菜单。
切换按钮 (用于显示/隐藏侧边栏)
部分表示主要内容区域。
2. CSS样式
接下来,为侧边栏和主要内容区域设置样式,并使其具有响应性:
* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: Arial, sans-serif; display: flex; overflow: hidden; } button.toggle { z-index: 10; position: fixed; left: 12px; top: 10px; background-color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b575757; color: white; border: none; padding: 10px; cursor: pointer; } nav { width: 250px; height: 100vh; background-color: https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15b333; transition: all 0.3s; padding-top: 60px; /* ... (其余样式保持不变) ... */ } /* ... (其余样式保持不变) ... */
解释:
侧边栏初始宽度为 250px,最小化时收缩到 60px。
在移动设备上(最大宽度:768px),侧边栏默认隐藏 (left: -250px),激活时滑动显示。
切换按钮固定在左上角。
3. JavaScript交互
最后,添加JavaScript代码处理侧边栏的切换:
function toggleSidenav() { const sidenav = document.querySelector("https://www.php.cn/link/93ac0c50dd620dc7b88e5fe05c70e15bsidenav"); if (window.innerWidth <= 767) { sidenav.classList.toggle("active"); } else { sidenav.classList.toggle("min"); } } document.querySelector(".toggle").addEventListener("click", toggleSidenav);
解释:
该函数检查屏幕是否为移动设备(最大宽度:767px)。如果是移动设备,则切换 active 类以显示/隐藏菜单;如果是桌面设备,则切换 min 类以折叠/展开菜单。
结论
通过以上设置,我们得到一个响应式的侧边导航栏:
在桌面设备上可以展开和折叠。
在移动设备上可以滑动显示和隐藏。
JavaScript 用于实现交互功能。 查看演示效果了解完整实现。
还木有评论哦,快来抢沙发吧~