这是一款效果非常炫酷的液态环形按钮菜单jQuery特效。该特效使用GSAP来制作圆形按钮的变形动画,当用户点击主按钮时,按钮会像液体一样变形,并分离出3个子菜单按钮。
使用方法
使用该液态环形按钮菜单特效需要在页面中引入jQuery和TweenMax.min.js以及font-awesome字体图标文件。
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
<script type="text/javascript" src="js/jquery.min.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.2/TweenMax.min.js'></script>
HTML结构
该液态环形按钮菜单的HTML结构非常简单,子菜单使用的是一个无序列表,每个列表项中是一个按钮元素以及一个用于制作弹性效果的div层。主菜单按钮就是一个按钮元素。
<div class='content'>
<div class='menu'>
<div class='menu-wrapper'>
<ul class='menu-items'>
<li class='menu-item'>
<button class='menu-item-button'>
<i class='fa fa-reply-all'></i>
</button>
<div class='menu-item-bounce'></div>
</li>
<li class='menu-item'>
<button class='menu-item-button'>
<i class='fa fa-inbox'></i>
</button>
<div class='menu-item-bounce'></div>
</li>
<li class='menu-item'>
<button class='menu-item-button'>
<i class='fa fa-trash'></i>
</button>
<div class='menu-item-bounce'></div>
</li>
</ul>
<button class='menu-toggle-button'>
<i class='fa fa-plus menu-toggle-icon'></i>
</button>
</div>
</div>
</div>
CSS样式
为菜单添加下面的一些简单的CSS样式。
.menu {
width: 300px;
height: 200px;
margin: 0 auto 100px;
position: relative;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
.menu-wrapper {
position: absolute;
left: 50%;
bottom: 10px;
}
.menu-toggle-button, .menu-item-bounce, .menu-item-button {
background: #4f4f64;
border-radius: 50%;
width: 80px;
height: 80px;
margin-left: -40px;
margin-top: -40px;
height: 80px;
color: #fff;
border: none;
outline: none;
position: relative;
}
.menu-toggle-button {
background: transparent;
position: absolute;
top: 0;
left: 0;
}
.menu-toggle-icon {
font-size: 30px;
position: absolute;
top: 0;
left: 0;
width: 80px;
height: 80px;
line-height: 80px;
}
.menu-items {
list-style-type: none;
padding: 0;
margin: 0;
position: absolute;
left: 0;
top: 0;
}
.menu-item {
position: absolute;
top: 0;
left: 0;
width: 0;
height: 0;
}
.menu-item-bounce {
position: absolute;
top: 0;
left: 0;
}
.menu-item-button {
width: 60px;
height: 60px;
margin-left: -30px;
margin-top: -30px;
position: absolute;
top: 0;
left: 0;
color: #AD4C4C;
}
.menu-item-button .fa {
font-size: 1.5rem;
color: #fff;
}
.menu-item-button .fa-inbox {
transform: rotate(182deg);
}
.menu-item-button .fa-reply-all {
transform: rotate(-120deg);
}
.menu-item-button .fa-trash {
transform: rotate(120deg);
}
JavaScript
该液态环形按钮菜单使用GSAP来制作按钮的动画效果。其中openMenu()函数为打开菜单,closeMenu()函数为关闭菜单。
$(document).ready(function(){
var menuItemNum=$(".menu-item").length;
var angle=120;
var distance=90;
var startingAngle=180+(-angle/2);
var slice=angle/(menuItemNum-1);
TweenMax.globalTimeScale(0.8);
$(".menu-item").each(function(i){
var angle=startingAngle+(slice*i);
$(this).css({
transform:"rotate("+(angle)+"deg)"
})
$(this).find(".menu-item-icon").css({
transform:"rotate("+(-angle)+"deg)"
})
})
var on=false;
$(".menu-toggle-button").mousedown(function(){
TweenMax.to($(".menu-toggle-icon"),0.1,{
scale:0.65
})
})
$(document).mouseup(function(){
TweenMax.to($(".menu-toggle-icon"),0.1,{
scale:1
})
});
$(document).on("touchend",function(){
$(document).trigger("mouseup")
})
$(".menu-toggle-button").on("mousedown",pressHandler);
$(".menu-toggle-button").on("touchstart",function(event){
$(this).trigger("mousedown");
event.preventDefault();
event.stopPropagation();
});
function pressHandler(event){
on=!on;
TweenMax.to($(this).children('.menu-toggle-icon'),0.4,{
rotation:on?45:0,
ease:Quint.easeInOut,
force3D:true
});
on?openMenu():closeMenu();
}
function openMenu(){
$(".menu-item").each(function(i){
var delay=i*0.08;
var $bounce=$(this).children(".menu-item-bounce");
TweenMax.fromTo($bounce,0.2,{
transformOrigin:"50% 50%"
},{
delay:delay,
scaleX:0.8,
scaleY:1.2,
force3D:true,
ease:Quad.easeInOut,
onComplete:function(){
TweenMax.to($bounce,0.15,{
// scaleX:1.2,
scaleY:0.7,
force3D:true,
ease:Quad.easeInOut,
onComplete:function(){
TweenMax.to($bounce,3,{
// scaleX:1,
scaleY:0.8,
force3D:true,
ease:Elastic.easeOut,
easeParams:[1.1,0.12]
})
}
})
}
});
TweenMax.to($(this).children(".menu-item-button"),0.5,{
delay:delay,
y:distance,
force3D:true,
ease:Quint.easeInOut
});
})
}
function closeMenu(){
$(".menu-item").each(function(i){
var delay=i*0.08;
var $bounce=$(this).children(".menu-item-bounce");
TweenMax.fromTo($bounce,0.2,{
transformOrigin:"50% 50%"
},{
delay:delay,
scaleX:1,
scaleY:0.8,
force3D:true,
ease:Quad.easeInOut,
onComplete:function(){
TweenMax.to($bounce,0.15,{
// scaleX:1.2,
scaleY:1.2,
force3D:true,
ease:Quad.easeInOut,
onComplete:function(){
TweenMax.to($bounce,3,{
// scaleX:1,
scaleY:1,
force3D:true,
ease:Elastic.easeOut,
easeParams:[1.1,0.12]
})
}
})
}
});
TweenMax.to($(this).children(".menu-item-button"),0.3,{
delay:delay,
y:0,
force3D:true,
ease:Quint.easeIn
});
})
}
})






![MBTI 16型人格职业性格测试源码PC+H5自适应完整版基于ThinkPHP框架[亲测可用]](https://www.icbot.net/upload/portal/20250429/32ccad646f32a5f4926b3b7b5ef3232a.png)















