3款纯CSS3实现汉堡(三横杠)菜单点击变叉动画
作者:admin 时间:2023-6-16 14:33:10 浏览:汉堡(三横杠)菜单是移动菜单的开关,所以很多人会追求它的样式设计、动画设计如何更美观好看,本文介绍3款纯CSS3实现的汉堡(三横杠)菜单点击变叉动画。
效果图
HTML
下面是3款菜单的HTML结构,它们的代码是一样的,不同的是它们的CSS样式。
<div class="hamburger" id="hamburger-1" onclick="this.classList.toggle('is-active')"><span class="line"></span><span class="line"></span><span class="line"></span></div>
<div class="hamburger" id="hamburger-2" onclick="this.classList.toggle('is-active')"><span class="line"></span><span class="line"></span><span class="line"></span></div>
<div class="hamburger" id="hamburger-3" onclick="this.classList.toggle('is-active')"><span class="line"></span><span class="line"></span><span class="line"></span></div>
我们看到,每个div
标签有一个onclick属性,这是鼠标点击事件,点击图标后三横杠和叉这两个图标以动画形式切换。
CSS
下面是3款菜单的CSS样式。
示例1
#hamburger-1.is-active .line:nth-child(2) {
opacity: 0;
}
#hamburger-1.is-active .line:nth-child(1) {
-webkit-transform: translateY(13px) rotate(45deg);
-ms-transform: translateY(13px) rotate(45deg);
-o-transform: translateY(13px) rotate(45deg);
transform: translateY(13px) rotate(45deg);
}
#hamburger-1.is-active .line:nth-child(3) {
-webkit-transform: translateY(-13px) rotate(-45deg);
-ms-transform: translateY(-13px) rotate(-45deg);
-o-transform: translateY(-13px) rotate(-45deg);
transform: translateY(-13px) rotate(-45deg);
}
示例2
#hamburger-2 {
position: relative;
-webkit-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
#hamburger-2.is-active {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
}
#hamburger-2:before {
content: "";
position: absolute;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
width: 70px;
height: 70px;
border: 5px solid transparent;
top: calc(50% - 35px);
left: calc(50% - 35px);
border-radius: 100%;
-webkit-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
#hamburger-2.is-active:before {
border: 5px solid #ecf0f1;
}
#hamburger-2.is-active .line {
width: 35px;
}
#hamburger-2.is-active .line:nth-child(2) {
opacity: 0;
}
#hamburger-2.is-active .line:nth-child(1) {
-webkit-transform: translateY(13px);
-ms-transform: translateY(13px);
-o-transform: translateY(13px);
transform: translateY(13px);
}
#hamburger-2.is-active .line:nth-child(3) {
-webkit-transform: translateY(-13px) rotate(90deg);
-ms-transform: translateY(-13px) rotate(90deg);
-o-transform: translateY(-13px) rotate(90deg);
transform: translateY(-13px) rotate(90deg);
}
示例3
#hamburger-3 {
-webkit-transition: all 0.3s ease-in-out;
-o-transition: all 0.3s ease-in-out;
transition: all 0.3s ease-in-out;
}
#hamburger-3.is-active {
animation: smallbig 0.6s forwards;
}
@keyframes smallbig {
0%, 100% {
-webkit-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1);
}
50% {
-webkit-transform: scale(0);
-ms-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
}
}
#hamburger-3.is-active .line:nth-child(1),#hamburger-3.is-active .line:nth-child(2),#hamburger-3.is-active .line:nth-child(3) {
-webkit-transition-delay: 0.2s;
-o-transition-delay: 0.2s;
transition-delay: 0.2s;
}
#hamburger-3.is-active .line:nth-child(2) {
opacity: 0;
}
#hamburger-3.is-active .line:nth-child(1) {
-webkit-transform: translateY(13px) rotate(45deg);
-ms-transform: translateY(13px) rotate(45deg);
-o-transform: translateY(13px) rotate(45deg);
transform: translateY(13px) rotate(45deg);
}
#hamburger-3.is-active .line:nth-child(3) {
-webkit-transform: translateY(-13px) rotate(-45deg);
-ms-transform: translateY(-13px) rotate(-45deg);
-o-transform: translateY(-13px) rotate(-45deg);
transform: translateY(-13px) rotate(-45deg);
}
CSS解释
我们看到,CSS主要代码是使用 transition
和 transform
两个属性来实现,这两个是动画属性。下面文章详述了这两个属性的使用。
JavaScript
本文示例中,JavaScript不是必须的,但我们可以用JavaScript来实现鼠标点击事件。我们可以把HTML代码里div
的onclick属性去掉,然后用JavaScript来给div
绑定点击事件。代码如下:
<div class="hamburger" id="hamburger-1"><span class="line"></span><span class="line"></span><span class="line"></span></div>
<div class="hamburger" id="hamburger-2"><span class="line"></span><span class="line"></span><span class="line"></span></div>
<div class="hamburger" id="hamburger-3"><span class="line"></span><span class="line"></span><span class="line"></span></div>
<script src="jquery-3.2.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$(".hamburger").click(function() {
$(this).toggleClass("is-active");
});
});
</script>
这里用的是jQuery实现,因此要先引用jQuery库文件jquery-3.2.1.min.js。
总结
本文介绍了3款纯CSS3实现汉堡(三横杠)菜单点击变叉动画,喜欢的朋友可以收藏本页,也可以直接下载源码备用。
您可能对以下文章也感兴趣
相关文章
相关文章
x
- 站长推荐