📅  最后修改于: 2023-12-03 15:37:53.872000             🧑  作者: Mango
在移动设备中,常常使用汉堡菜单来展示导航和其他功能选项。下面介绍如何为移动设备创建汉堡菜单。
将汉堡菜单的 HTML 结构放在固定位置,如在页面的顶部或侧边栏。下面是汉堡菜单的基本结构。
<div class="burger-menu">
<div class="burger-menu__line"></div>
<div class="burger-menu__line"></div>
<div class="burger-menu__line"></div>
</div>
其中,"burger-menu" 类是整个汉堡菜单的容器,"burger-menu__line" 类是汉堡菜单的每一条线条。
添加样式来显示汉堡菜单和导航菜单。需要注意的是,在未打开汉堡菜单时,导航菜单应该是隐藏的。
.burger-menu {
width: 30px;
height: 24px;
display: flex;
flex-direction: column;
justify-content: space-between;
cursor: pointer;
}
.burger-menu__line {
width: 100%;
height: 3px;
background-color: #000;
transition: transform .3s ease;
}
.menu {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background-color: #fff;
padding: 20px;
}
.menu__item {
padding: 10px 0;
}
在打开汉堡菜单时,使用 CSS 动画来展示其打开和关闭状态。添加下面的样式来实现。
.burger-menu--open .burger-menu__line:nth-child(1) {
transform: translateY(6px) rotate(45deg);
}
.burger-menu--open .burger-menu__line:nth-child(2) {
opacity: 0;
}
.burger-menu--open .burger-menu__line:nth-child(3) {
transform: translateY(-6px) rotate(-45deg);
}
.burger-menu--open + .menu {
display: block;
}
使用 JavaScript 来添加汉堡菜单的交互行为。当点击汉堡菜单时,添加相应的类名来展示或隐藏导航菜单。
const burgerMenu = document.querySelector('.burger-menu');
const menu = document.querySelector('.menu');
burgerMenu.addEventListener('click', toggleMenu);
function toggleMenu() {
burgerMenu.classList.toggle('burger-menu--open');
menu.classList.toggle('menu--open');
}
下面是基本的 HTML 结构,CSS 样式和 JavaScript 代码的完整实现。
<!DOCTYPE html>
<html>
<head>
<title>汉堡菜单示例</title>
<style>
.burger-menu {
width: 30px;
height: 24px;
display: flex;
flex-direction: column;
justify-content: space-between;
cursor: pointer;
}
.burger-menu__line {
width: 100%;
height: 3px;
background-color: #000;
transition: transform .3s ease;
}
.menu {
display: none;
position: absolute;
top: 100%;
left: 0;
width: 100%;
background-color: #fff;
padding: 20px;
}
.menu__item {
padding: 10px 0;
}
.burger-menu--open .burger-menu__line:nth-child(1) {
transform: translateY(6px) rotate(45deg);
}
.burger-menu--open .burger-menu__line:nth-child(2) {
opacity: 0;
}
.burger-menu--open .burger-menu__line:nth-child(3) {
transform: translateY(-6px) rotate(-45deg);
}
.burger-menu--open + .menu {
display: block;
}
</style>
</head>
<body>
<div class="burger-menu">
<div class="burger-menu__line"></div>
<div class="burger-menu__line"></div>
<div class="burger-menu__line"></div>
</div>
<nav class="menu">
<ul>
<li class="menu__item"><a href="#">首页</a></li>
<li class="menu__item"><a href="#">产品</a></li>
<li class="menu__item"><a href="#">服务</a></li>
<li class="menu__item"><a href="#">关于</a></li>
<li class="menu__item"><a href="#">联系我们</a></li>
</ul>
</nav>
<script>
const burgerMenu = document.querySelector('.burger-menu');
const menu = document.querySelector('.menu');
burgerMenu.addEventListener('click', toggleMenu);
function toggleMenu() {
burgerMenu.classList.toggle('burger-menu--open');
menu.classList.toggle('menu--open');
}
</script>
</body>
</html>
以上是为移动设备创建汉堡菜单的完整指南。