本文主要介绍一个适用于移动端响应式打开或关闭遮罩导航菜单动画特效,可以提高网站的用户交互体验和美观度。
效果介绍:
该特效实现了一个响应式的导航菜单,具有以下特点:
- 通过点击顶部的菜单图标,可以打开或关闭导航菜单;
- 在打开导航菜单时,会有遮罩层覆盖整个页面,防止用户误操作;
- 导航菜单具有动画效果,增强用户的视觉体验。
实现方法:
该特效采用HTML、CSS和JavaScript实现,主要是通过CSS动画、JavaScript控制事件和样式等实现。
HTML结构:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>响应式遮罩导航菜单</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<nav>
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">分类</a></li>
<li><a href="#">标签</a></li>
<li><a href="#">关于我们</a></li>
</ul>
<span class="menu-icon"></span>
</nav>
</header>
<div class="menu-modal">
<nav class="menu">
<ul>
<li><a href="#">首页</a></li>
<li><a href="#">分类</a></li>
<li><a href="#">标签</a></li>
<li><a href="#">关于我们</a></li>
</ul>
</nav>
</div>
<script src="jquery.js"></script>
<script src="app.js"></script>
</body>
</html>
CSS样式:
* {
margin: 0;
padding: 0;
}
header {
background-color: #333;
color: #fff;
padding: 1em;
}
nav ul {
display: flex;
}
nav li {
margin-left: 1em;
}
nav a {
color: #fff;
text-decoration: none;
}
.menu-icon {
width: 20px;
height: 20px;
position: relative;
display: inline-block;
vertical-align: middle;
cursor: pointer;
}
.menu-icon::before,
.menu-icon::after {
content: '';
width: 100%;
height: 3px;
background-color: #fff;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
transition: all 0.3s ease;
}
.menu-icon::before {
transform: translateY(-8px);
}
.menu-icon::after {
transform: translateY(8px);
}
.menu-icon.clicked::before {
transform: translateY(0) rotate(45deg);
}
.menu-icon.clicked::after {
transform: translateY(0) rotate(-45deg);
}
.menu-modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.6);
z-index: 1000;
opacity: 0;
visibility: hidden;
transition: opacity 0.3s;
}
.menu-modal.show {
opacity: 1;
visibility: visible;
}
.menu {
position: fixed;
top: 0;
left: 0;
width: 70%;
height: 100%;
background-color: #fff;
z-index: 1001;
transform: translateX(-100%);
transition: transform 0.3s;
}
.menu.show {
transform: translateX(0);
}
.menu ul {
display: flex;
flex-direction: column;
justify-content: center;
height: 100%;
padding: 1em;
}
.menu li {
margin-bottom: 1em;
}
.menu a {
font-size: 1.2em;
}
JS代码:
$(function() {
$('.menu-icon').click(function() {
$(this).toggleClass('clicked');
$('.menu-modal').toggleClass('show');
$('.menu').toggleClass('show');
});
});
以上代码实现了一个响应式的导航菜单特效。通过HTML结构、CSS样式和JS代码的配合,实现了点击菜单图标,在页面上打开或关闭遮罩导航菜单的特效,增强了用户体验。