我希望通过html实现一个简单的菜单栏渐变到关闭按钮的动画,菜单栏的上、下两横旋转交叉,中间一横消失,手动形成一个X形状
首先展示一下我最终制作的效果🤗
通过在一个button中放置三个横线,实现导航栏按钮效果
<button id="menuButton" class="Button-content" >
<span>
<div class="HeaderMenu-toggle-bar"></div>
<div class="HeaderMenu-toggle-bar"></div>
<div class="HeaderMenu-toggle-bar"></div>
</span>
</button>
.Button-content {
font-size: 18px;
border: none;
display: flex; /* 可以改为none设置在PC端不显示 */
}
@media screen and (max-width: 768px) {
.Button-content {
display: flex;
}
}
.HeaderMenu-toggle-bar {
width: 25px;
height: 3px;
background-color: white;
margin: 4px 0;
transition: transform 0.3s ease;
}
现在制作一个点击后的样式
.changed .HeaderMenu-toggle-bar:nth-child(2) {
opacity: 0;
}
.changed .HeaderMenu-toggle-bar:nth-child(1) {
transform: translateY(8px) rotate(45deg);
}
.changed .HeaderMenu-toggle-bar:nth-child(3) {
transform: translateY(-8px) rotate(-45deg);
}
在按钮被改变(点击切换)时,选择第一个和第三个子元素(即上下的按钮条)。分别将上下两个按钮条旋转,形成一个斜角,与中间的按钮条一起形成一个 X 形状。
最后编写一个切换状态的函数
document.getElementById('menuButton').addEventListener('click', function () {
this.classList.toggle('changed');
});
点击按钮,即可在changed状态与正常状态下来回切换,实现预定效果
最终效果参考本文前言
保存下列代码到test.html中,在浏览器中打开即可预览效果
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="utf-8">
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<style>
.Button-content {
font-size: 18px;
background-color: var(--xjs-color-1);
border: none;
display: flex;
}
@media screen and (max-width: 768px) {
.Button-content {
display: flex;
}
}
.HeaderMenu-toggle-bar {
width: 25px;
height: 3px;
background-color: black;
margin: 4px 0;
transition: transform 0.3s ease;
}
.changed .HeaderMenu-toggle-bar:nth-child(2) {
opacity: 0;
}
.changed .HeaderMenu-toggle-bar:nth-child(1) {
transform: translateY(8px) rotate(45deg);
}
.changed .HeaderMenu-toggle-bar:nth-child(3) {
transform: translateY(-8px) rotate(-45deg);
}
</style>
</head>
<header>
<button id="menuButton" class="Button-content">
<span>
<div class="HeaderMenu-toggle-bar"></div>
<div class="HeaderMenu-toggle-bar"></div>
<div class="HeaderMenu-toggle-bar"></div>
</span>
</button>
</header>
<body>
<script>
document.getElementById('menuButton').addEventListener('click', function () {
this.classList.toggle('changed');
});
</script>
</body>
</html>
以上就是本文分享的全部内容啦,希望对你有帮助!😊