最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于 Vue 實(shí)現(xiàn)一個酷炫的 menu插件

 更新時間:2017年11月14日 09:36:01   投稿:mrr  
本文給大家介紹基于 Vue 實(shí)現(xiàn)一個酷炫的 menu插件,此篇教程需要大家具備一定的css和vue基礎(chǔ)知識,本文分步驟給大家介紹的非常詳細(xì),需要的朋友參考下吧

寫在前面

最近看到一個非??犰诺膍enu插件,一直想把它鼓搗成vue形式,誰讓我是vue的死灰粉呢,如果這都不算愛:pensive:。:laughing:開個小玩耍,我們一起來探索黑魔法吧。觀看本教程的讀者需要具備一定的vue和css3的知識.

本文結(jié)構(gòu)

1.效果演示

2.使用方法介紹

3.關(guān)鍵步驟講解

正文

1.效果演示

pic_1

pic2

pic_3

在線演示 live demo

2.使用介紹

項(xiàng)目地址:github.com/MingSeng-W/vue-bloom-menu ,clone項(xiàng)目到本地

a. 首先在單文件組件里引入menu組件,導(dǎo)入common文件夾stylus里的menuConfig.stylus.

b.配置相應(yīng)的參數(shù)

可選參數(shù)

* radius:default為100px,item距離menu的button的距離。

* startAngle:defaut為0,item開始的角度,以時鐘3點(diǎn)鐘方向記為0,然后順時針方向?yàn)檫f增方向。

* endAngle:default為315,最后一個item的角度。

* itemNum:default為8

* animationDuration:default為0.5s,每個item動畫的執(zhí)行時間

* itemAnimationDelay:default為0.04s,每個item之間animation觸發(fā)的間隔延遲時間

必選參數(shù)

* iconImgArr

import您需要的icon,然后生成iconImgArr(computed屬性綁定),作為props傳給menu組件

menu的位置

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

corner的class:.menu-left-corner-wrapper。當(dāng)然自己指定位置也是ok的。

一個簡單的example

 

demo

3.關(guān)鍵步驟講解

整個menu的實(shí)現(xiàn)關(guān)鍵在于計(jì)算menu展開后最后的坐標(biāo),以及展開與收縮的動畫.(由于整個項(xiàng)目布局比較簡單,所以這里主要講解邏輯和動畫的實(shí)現(xiàn))

第一步:計(jì)算menu展開后橫坐標(biāo)和縱坐標(biāo)

下面的x,y分別表示item在頁面的位置,以x為例。

x:原始的位置,x2最后展開的位置,x1中間的過渡位置(主要是造成一個“拉回”的效果),以下是圖片解釋,為了解釋簡單明了,我放大了radius倍數(shù)以及增加了動畫的執(zhí)行時間。

位置解釋

位置的計(jì)算:首先計(jì)算每個item之間的夾角,起始item是沿著順時針布局的,每個item之間的夾角等于(endAngle-startAngle)/(itemNum-1)。當(dāng)前item應(yīng)該旋轉(zhuǎn)的角度為:angleCur=startAngle+index*每個item之間的夾角。得到item的旋轉(zhuǎn)角度之后,用Math.cos和Math.sin和radius相乘得到其橫坐標(biāo)和縱坐標(biāo).

關(guān)鍵代碼:

計(jì)算每個item的夾角

位置解釋

第二步,根據(jù)生成的坐標(biāo)使用js動態(tài)生成animtion,并插入到樣式文件中。

生成展開和收縮的keyframe

到這一步我們完成了點(diǎn)擊menu展開與收縮。

第二步,完成點(diǎn)擊item之后item放大與消失,其他的item縮小與消失

item消失的keyframe

item消失的keyframe

這里觸發(fā)動畫使用 vue提供transition ,當(dāng)元素的v-show為false時,也就是display為none時,觸發(fā)動畫。

每個item動畫完成后都會觸發(fā)animationEnd事件,監(jiān)聽item的animationEnd事件,當(dāng)所有動畫依次觸發(fā)完畢之后,提醒menu置于關(guān)閉狀態(tài)( 父子組件通信 )。

我在menu組件里使用v-on監(jiān)聽animationEnd事件,item自己的動畫執(zhí)行后,通過$emit觸發(fā)animationEnd事件,通知menu的動畫計(jì)數(shù)count++,當(dāng)count達(dá)到總的項(xiàng)目數(shù)的時候,menu進(jìn)行關(guān)閉.

code

code

再次打開menu的時候檢查與item綁定的showItem是否為false,是的話置為true。點(diǎn)擊時需要拿到被點(diǎn)擊item的index,得到全局的currentIndex即被點(diǎn)擊的item的index。被點(diǎn)中的使用放大動畫,否則使用縮小動畫。

pic_6

關(guān)鍵代碼

至此所有步驟講解完畢

總結(jié)

以上所述是小編給大家介紹的基于 Vue 實(shí)現(xiàn)一個酷炫的 menu插件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • vue-router實(shí)現(xiàn)嵌套路由的講解

    vue-router實(shí)現(xiàn)嵌套路由的講解

    今天小編就為大家分享一篇關(guān)于vue-router實(shí)現(xiàn)嵌套路由的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • vue el-select綁定對象時,回顯內(nèi)容不正確,始終是最后一項(xiàng)的解決

    vue el-select綁定對象時,回顯內(nèi)容不正確,始終是最后一項(xiàng)的解決

    這篇文章主要介紹了vue el-select綁定對象時,回顯內(nèi)容不正確,始終是最后一項(xiàng)的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 解讀element?el-upload上傳的附件名稱不顯示?file-list賦值

    解讀element?el-upload上傳的附件名稱不顯示?file-list賦值

    這篇文章主要介紹了解讀element?el-upload上傳的附件名稱不顯示?file-list賦值問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue如何獲取點(diǎn)擊事件源的方法

    vue如何獲取點(diǎn)擊事件源的方法

    本篇文章主要介紹了vue如何獲取點(diǎn)擊事件源的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • 多個vue子路由文件自動化合并的方法

    多個vue子路由文件自動化合并的方法

    這篇文章主要給大家介紹了關(guān)于多個vue子路由文件自動化合并的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue父組件給子組件的組件傳值provide inject的方法

    vue父組件給子組件的組件傳值provide inject的方法

    在本篇文章里小編給大家整理的是一篇關(guān)于vue父組件給子組件的組件傳值provide inject的方法,需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • Vue.js中el-table表格自定義列控制與拖拽

    Vue.js中el-table表格自定義列控制與拖拽

    本文主要介紹了Vue.js中el-table表格自定義列控制與拖拽,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue 自定義 select內(nèi)置組件

    vue 自定義 select內(nèi)置組件

    這篇文章主要介紹了vue 自定義內(nèi)置組件 select的相關(guān)知識,整合了第三方j(luò)query 插件select2,具體實(shí)例代碼大家參考下本文
    2018-04-04
  • Tree 組件搜索過濾功能實(shí)現(xiàn)干貨

    Tree 組件搜索過濾功能實(shí)現(xiàn)干貨

    這篇文章主要為大家介紹了 Tree組件搜索過濾功能實(shí)現(xiàn)干貨詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • vue2實(shí)現(xiàn)在el-table里插入el-tag的示例代碼

    vue2實(shí)現(xiàn)在el-table里插入el-tag的示例代碼

    這篇文章主要介紹了vue2實(shí)現(xiàn)在el-table里插入el-tag的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-12-12

最新評論

比如县| 交城县| 都匀市| 合肥市| 呼图壁县| 肥乡县| 桐乡市| 微山县| 朝阳县| 连云港市| 宜良县| 攀枝花市| 金平| 高清| 河西区| 新巴尔虎右旗| 工布江达县| 宜春市| 瑞安市| 清水河县| 阜南县| 木兰县| 疏附县| 会宁县| 土默特左旗| 普兰店市| 松原市| 乌恰县| 淮滨县| 盘山县| 道孚县| 海伦市| 长顺县| 扎鲁特旗| 陵水| 仙游县| 甘洛县| 莫力| 公主岭市| 泸西县| 房产|