![750d8fb0038c473ed0d3bbe946f5cf71.gif](https://i-blog.csdnimg.cn/blog_migrate/c284004f2305eb1fae80278635081bc3.gif)
天道好轮回 苍天绕过谁
拖更不是我的一厢情愿,浏览量哗哗下掉,于是我又回来了
希望有一天大家都能在借鉴中创新
看一下今天实现的效果:
![a257bcd5289e917d3847b5b8cea505d3.gif](https://i-blog.csdnimg.cn/blog_migrate/ff21c02cb9d23a34915990692a48c617.gif)
静态代码分为两部分:静态状态|点击被召唤的
因此构建静态代码:
<div class="container">
<div class="wrapper">
<div class="item-simple">首页</div>
<div class="item-simple">进吧</div>
<div class="item-simple">
<div id="menu" class="menu" onclick="addAction()"><span class="add_menu">+</span></div>
</div>
<div class="item-simple">消息</div>
<div class="item-simple">我的</div>
</div>
</div>
![6c53bbe32a61c7befa3494a3a937df15.png](https://i-blog.csdnimg.cn/blog_migrate/6a960815dd405a71ffe99f9a350151f9.png)
div分割五部分,其中的中间部分用于做特殊的点击中心按钮。实现效果需要:
加背景-》放大+-》旋转+-》上浮位置-》阴影(为了立体效果)
.wrapper {
margin-top: 20%;
margin-left: 20%;
align-items: center;
background-color: #fff;
display: flex;
width: 400px;
height: 80px;
position: absolute;
}
.menu {
width: 70%;
height: 70%;
line-height: 56px;
transform: rotate(45deg);
margin: -20% auto;
background-color: #409EFF;
border-radius: 15%;
color: #ffffff;
font-size: 10px;
box-shadow: 0 0 5px 0 #9fa2a6;
}
.add_menu {
display: block;
font-size: 20px;
transform: rotate(-45deg);
}
这样的话会有一个粗糙的展示
![a3cc1fdf2a6740b574143cea6dcc31c4.png](https://i-blog.csdnimg.cn/blog_migrate/ef3344bc98cac38fe33b105e7b5a958d.png)
实现点击实现菜单首先旋转的效果,这里面引入的jquery,绑定了点击事件。
实现的原理很简单,就是点击的时候移除增加新的class样式,新的class样式绑定了新的样式和动作效果,再次点击的时候移除之前的效果使其恢复到之前的状态:
/*点击菜单展现的效果*/
.menu-operation {
animation: 1s forwards ease MENU;
-webkit-animation: 1s forwards ease MENU;;
}
@keyframes MENU {
to {
transform: rotate(90deg);
-webkit-transform: rotate(90deg);
}
}
@-webkit-keyframes MENU{
to {
transform: rotate(90deg);
-webkit-transform: rotate(90deg);
}
}
function addAction() {
if ($("#menu").hasClass("menu-operation")) {
$("#menu").removeClass("menu-operation").addClass("cancle_menu");
} else {
$("#menu").removeClass("cancle_menu").addClass('menu-operation');
}
}
这个时候可以看到菜单点击的时候的效果展示,菜单回去的效果没有设置,原理都是一样的可以自己模仿写一份,源代码下面我会给出:
![ac39d11048ce93d0cab7fb672f6d3ff5.gif](https://i-blog.csdnimg.cn/blog_migrate/ca585b5999a2323f4e580258525e4eae.gif)
回去状态的样式代码:
.cancle_menu {
animation: 1s forwards ease CANCLEMENU;
-webkit-animation: 1s forwards ease CANCLEMENU;
}
@keyframes CANCLEMENU {
from {
transform: rotate(90deg);
-webkit-transform: rotate(90deg);
}
to {
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
}
}
@-webkit-keyframes CANCLEMENU{
from {
transform: rotate(90deg);
-webkit-transform: rotate(90deg);
}
to {
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
}
}
![2f07dc016eec9ba6a4a316aee36a2da2.gif](https://i-blog.csdnimg.cn/blog_migrate/e60f4a4db98a875de58f62c14c6d975b.gif)
相同的位置使用绝对定位的方式,在当前菜单的位置背后设置新的菜单版本,这个时候我们只需要分割四部分菜单,因为这个时候我们中间不需要那个菜单的操作按钮了,然后添加新的样式动作:
<div class="wrapper-back">
<div class="item item-back">首页</div>
<div class="item item-back">进吧</div>
<div class="item item-back">消息</div>
<div class="item item-back">我的</div>
</div>
.menu_up {
animation: 1s forwards ease MENUUP;
-webkit-animation: 1s forwards ease MENUUP;
}
@keyframes MENUUP {
from {
border-radius: 50%;
}
75% {
transform: rotate(45deg);
color: #000000;
}
to {
margin: 0 9px 200px 9px;
border-radius: 30%;
transform: rotate(0deg);
color: #000000;
}
}
@-webkit-keyframes MENUUP {
from {
border-radius: 50%;
}
75% {
transform: rotate(45deg);
}
to {
margin: 0 9px 200px 9px;
border-radius: 30%;
transform: rotate(0deg);
}
}
.menu_down {
animation: 1s forwards ease MENUDWON;
-webkit-animation: 1s forwards ease MENUDWON;
}
@keyframes MENUDWON {
from {
margin: 0 9px 200px 9px;
border-radius: 30%;
transform: rotate(0deg);
color: #000000;
}
75% {
transform: rotate(45deg);
color: #ffffff;
border-radius: 50%;
}
to {
transform: rotate(90deg);
color: #ffffff;
border-radius: 50%;
}
}
@-webkit-keyframes MENUDWON {
from {
margin: 0 9px 200px 9px;
border-radius: 30%;
transform: rotate(0deg);
color: #000000;
}
75% {
transform: rotate(45deg);
color: #ffffff;
border-radius: 50%;
}
to {
transform: rotate(90deg);
color: #ffffff;
border-radius: 50%;
}
}
get 最终效果
![a257bcd5289e917d3847b5b8cea505d3.gif](https://i-blog.csdnimg.cn/blog_migrate/ff21c02cb9d23a34915990692a48c617.gif)
希望在这个基础之上大家有更好的扩张,记得艾特我
源代码获取(WX代号MENU_007)
如有兴趣欢迎关注:码农的技术分享 获取源代码
备注:源码有延迟 若无回复联系博主
![612e354529ff06d1ff8719db7c1ce3e5.png](https://i-blog.csdnimg.cn/blog_migrate/6aa59a722604a0fe9cc6b0fd9aadd4fe.png)