css 语言 CSS 制作可折叠的侧边抽屉菜单示例

CSS阿木 发布于 2025-06-18 4 次阅读


CSS 制作可折叠的侧边抽屉菜单示例

在网页设计中,侧边抽屉菜单是一种常见的交互元素,它可以帮助用户在不离开当前页面内容的情况下,快速访问导航链接。可折叠的侧边抽屉菜单可以提供更好的用户体验,因为它可以节省屏幕空间,并且用户可以根据需要展开或折叠菜单。本文将使用HTML和CSS来创建一个可折叠的侧边抽屉菜单示例。

1. 基础HTML结构

我们需要构建一个基本的HTML结构,它将包含菜单的容器、菜单项以及控制菜单展开和折叠的按钮。

html

<!DOCTYPE html>


<html lang="en">


<head>


<meta charset="UTF-8">


<meta name="viewport" content="width=device-width, initial-scale=1.0">


<title>Collapsible Sidebar Menu</title>


<link rel="stylesheet" href="styles.css">


</head>


<body>


<div class="sidebar">


<button class="menu-toggle">☰ Menu</button>


<nav class="menu">


<ul>


<li><a href="">Home</a></li>


<li><a href="">About</a></li>


<li class="submenu">


<a href="">Services</a>


<ul class="submenu-content">


<li><a href="">Web Design</a></li>


<li><a href="">Hosting</a></li>


<li><a href="">SEO</a></li>


</ul>


</li>


<li><a href="">Contact</a></li>


</ul>


</nav>


</div>


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


</body>


</html>


2. CSS样式

接下来,我们将使用CSS来设计侧边抽屉菜单的外观,并添加交互效果。

css

/ styles.css /


body {


margin: 0;


font-family: Arial, sans-serif;


}

.sidebar {


width: 250px;


height: 100vh;


background-color: 333;


position: fixed;


left: -250px;


transition: left 0.3s;


}

.menu-toggle {


background-color: 333;


color: white;


border: none;


padding: 10px;


width: 100%;


cursor: pointer;


}

.menu {


list-style: none;


padding: 0;


}

.menu li a {


display: block;


padding: 15px;


color: white;


text-decoration: none;


transition: background-color 0.3s;


}

.menu li a:hover {


background-color: 555;


}

.submenu {


position: relative;


}

.submenu-content {


display: none;


position: absolute;


left: 100%;


top: 0;


background-color: 333;


list-style: none;


padding: 0;


}

.submenu-content li a {


padding: 10px;


}

.submenu-content li a:hover {


background-color: 555;


}

/ Toggle menu on click /


.menu-toggle:checked + .menu ul {


display: block;


}

.menu li.submenu:hover .submenu-content {


display: block;


}


3. JavaScript交互

我们使用JavaScript来增强菜单的交互性,使得点击菜单项可以展开或折叠子菜单。

javascript

// script.js


document.addEventListener('DOMContentLoaded', function () {


var menuToggle = document.querySelector('.menu-toggle');


var menu = document.querySelector('.menu');

menuToggle.addEventListener('click', function () {


var isMenuOpen = menu.classList.contains('open');


menu.classList.toggle('open');


if (isMenuOpen) {


menu.style.left = '0';


} else {


menu.style.left = '-250px';


}


});

var submenuItems = document.querySelectorAll('.submenu');

submenuItems.forEach(function (submenuItem) {


submenuItem.addEventListener('mouseover', function () {


this.querySelector('.submenu-content').style.display = 'block';


});

submenuItem.addEventListener('mouseout', function () {


this.querySelector('.submenu-content').style.display = 'none';


});


});


});


4. 总结

通过上述代码,我们创建了一个可折叠的侧边抽屉菜单。用户可以通过点击菜单按钮来展开或折叠整个菜单,同时子菜单可以通过鼠标悬停来展开。这种设计不仅美观,而且功能强大,能够提升用户体验。

在实际开发中,可以根据具体需求调整样式和交互逻辑。例如,可以添加动画效果、响应式设计、以及与其他前端框架的集成等。通过不断优化和调整,可以打造出更加符合用户需求的侧边抽屉菜单。