位置: 编程技术 - 正文

基于 Vue 实现一个酷炫的 menu插件(vue如何用)

编辑:rootadmin

推荐整理分享基于 Vue 实现一个酷炫的 menu插件(vue如何用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue如何用,基于vue的项目,基于vue的项目,vue如何用,基于vue的项目,基于vue3.0,基于vue的ui,vue基于什么,内容如对您有帮助,希望把文章链接给更多的朋友!

写在前面

最近看到一个非常酷炫的menu插件,一直想把它鼓捣成vue形式,谁让我是vue的死灰粉呢,如果这都不算爱:pensive:。:laughing:开个小玩耍,我们一起来探索黑魔法吧。观看本教程的读者需要具备一定的vue和css3的知识.

本文结构

1.效果演示

2.使用方法介绍

3.关键步骤讲解

正文

1.效果演示

pic_1

pic2

pic_3

在线演示 live demo

2.使用介绍

项目地址:github.com/MingSeng-W/vue-bloom-menu ,clone项目到本地

a. 首先在单文件组件里引入menu组件,导入common文件夹stylus里的menuConfig.stylus.

b.配置相应的参数

可选参数

* radius:default为px,item距离menu的button的距离。

* startAngle:defaut为0,item开始的角度,以时钟3点钟方向记为0,然后顺时针方向为递增方向。

* endAngle:default为,最后一个item的角度。

* itemNum:default为8

* animationDuration:default为0.5s,每个item动画的执行时间

* itemAnimationDelay:default为0.s,每个item之间animation触发的间隔延迟时间

必选参数

* iconImgArr

import您需要的icon,然后生成iconImgArr(computed属性绑定),作为props传给menu组件

menu的位置

目前有center,corner两种位置,在menu的class里指定。center的class:.menu-center-wrapper

corner的class:.menu-left-corner-wrapper。当然自己指定位置也是ok的。

一个简单的example

demo

基于 Vue 实现一个酷炫的 menu插件(vue如何用)

3.关键步骤讲解

整个menu的实现关键在于计算menu展开后最后的坐标,以及展开与收缩的动画.(由于整个项目布局比较简单,所以这里主要讲解逻辑和动画的实现)

第一步:计算menu展开后横坐标和纵坐标

下面的x,y分别表示item在页面的位置,以x为例。

x:原始的位置,x2最后展开的位置,x1中间的过渡位置(主要是造成一个“拉回”的效果),以下是图片解释,为了解释简单明了,我放大了radius倍数以及增加了动画的执行时间。

位置解释

位置的计算:首先计算每个item之间的夹角,起始item是沿着顺时针布局的,每个item之间的夹角等于(endAngle-startAngle)/(itemNum-1)。当前item应该旋转的角度为:angleCur=startAngle+index*每个item之间的夹角。得到item的旋转角度之后,用Math.cos和Math.sin和radius相乘得到其横坐标和纵坐标.

关键代码:

计算每个item的夹角

位置解释

第二步,根据生成的坐标使用js动态生成animtion,并插入到样式文件中。

生成展开和收缩的keyframe

到这一步我们完成了点击menu展开与收缩。

第二步,完成点击item之后item放大与消失,其他的item缩小与消失

item消失的keyframe

item消失的keyframe

这里触发动画使用 vue提供transition ,当元素的v-show为false时,也就是display为none时,触发动画。

每个item动画完成后都会触发animationEnd事件,监听item的animationEnd事件,当所有动画依次触发完毕之后,提醒menu置于关闭状态( 父子组件通信 )。

我在menu组件里使用v-on监听animationEnd事件,item自己的动画执行后,通过$emit触发animationEnd事件,通知menu的动画计数count++,当count达到总的项目数的时候,menu进行关闭.

code

code

再次打开menu的时候检查与item绑定的showItem是否为false,是的话置为true。点击时需要拿到被点击item的index,得到全局的currentIndex即被点击的item的index。被点中的使用放大动画,否则使用缩小动画。

pic_6

关键代码

至此所有步骤讲解完毕

总结

以上所述是小编给大家介绍的基于 Vue 实现一个酷炫的 menu插件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

vue中如何创建多个ueditor实例教程 前言前一段时间公司Vue.js项目需要使用UEditor富文本编辑器,在百度上搜索一圈没有发现详细的说明,决定自己尝试,忙活了一天终于搞定了。具体可以参考

Vue.js实现列表清单的操作方法 一、Vue.js简要说明Vue.js(读音/vju/,类似于view)是一套构建用户界面的渐进式框架。与前端框架Angular一样,Vue.js在设计上采用MVVM模式,当View视图层发生变

vuejs实现本地数据的筛选分页功能思路详解 今天项目需要一份根据本地数据的筛选分页功能,好吧,本来以为很简单,网上搜了搜全是ajax获取的数据,这不符合要求啊,修改起来太费力气,还不

标签: vue如何用

本文链接地址:https://www.jiuchutong.com/biancheng/377383.html 转载请保留说明!

上一篇:Angular移动端页面input无法输入的解决方法(angular页面加载完后执行方法)

下一篇:vue中如何创建多个ueditor实例教程(vue怎么实现多页面)

  • 企业间分红是否需要缴纳企业所得税
  • 房地产企业销售现房是否预缴增值税
  • 外国驻华使领馆自用车辆
  • 动产增值税可以抵扣吗
  • 供热管道属于什么经营范围内
  • 采购返利怎么生成发票
  • 主营业务成本包括职工薪酬吗
  • 分公司预缴企业所得税总公司可以抵扣吗
  • 有限合伙企业利润先税后分
  • 企业所得税财务费用借款利息扣除标准
  • 在分公司关闭过程中,资产损失怎么申报扣除
  • 销售折让会影响单价吗
  • 清税证明要什么证件
  • 合伙企业个人所得税怎么申报
  • 收到一笔误缴的税款
  • 给客户现金回款怎么写
  • 稽查查补税款企业所得税
  • 城市建设综合配套费征收管理办法
  • 增值税附加税怎么报税
  • 文化事业建设费税收优惠政策2023
  • 管家婆怎样查历史记录
  • 季度缴纳所得税如何做账
  • 本期销售额未达起征点请将本期应纳税额
  • 已抵扣进项税额转出滞纳金
  • 公司技术服务部是干嘛的
  • 个体工商户怎么办对公账户
  • 收购股权公司
  • 对研发机构采购国产设备,全额退还增值税
  • 如何使用网络安全
  • 坏账损失企业所得税
  • 企业所得税预缴可以不交吗
  • 苹果14pro max价格
  • 苹果14
  • 税控盘进项税已抵扣如何转出分录
  • 子公司接受母公司无偿划转的房屋如何缴纳房产税
  • 办公费用减少的原因
  • 营业利润,利润总额的计算公式是
  • csinsm32.exe是安全的进程吗 csinsm32进程有哪些用处
  • mmtraylsi.exe是什么进程 有什么作用 mmtraylsi进程查询
  • antd:ConfigProvider+getPopupContainer解决筛选框遮挡问题(及其他浮层问题)
  • vue面试题视频
  • vue router 路由参数
  • 微信小程序开发平台
  • 待抵扣进项税额是什么情况下用的
  • 商业折扣的会计分录
  • 含消费税的商品开成了不含消费税怎么办
  • 接受捐赠收入要缴纳企业所得税吗
  • python怎么自己写函数
  • 增值税普票能抵税吗
  • 以件数为印花税计税的有哪些
  • 公司首次申报个人所得税
  • 有形动产租赁属于经营租赁吗
  • 预收账款可以长期挂账吗
  • 融资租赁业务的账务及涉税处理
  • 金税盘未响应什么意思
  • 明细与发票
  • 房屋维修基金交给哪个部门
  • 转账支票的特点有哪些
  • 合同资产百度百科
  • sql server 自增列设置语句
  • xp系统如何查询配置
  • ubuntu中装虚拟机
  • fciv.exe
  • win10系统怎么打开软键盘
  • win7系统开机登录不了怎么修复
  • win8.0下载
  • jQuery+AJAX实现遮罩层登录验证界面(附源码)
  • 都是惹得祸
  • cocos2d游戏源码
  • 脚本控制三行三列怎么写
  • python多线程作用
  • javascript数学函数
  • js中ajax完整例子
  • javascipt:void
  • js如何修改style
  • Android-Universal-Image-Loader最新框架解析
  • 开票系统忘记密码怎么找回
  • 河北发票查询真伪查询
  • 四川成都离剑门多远
  • 2020年个体税收政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设