国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

微信小程序實現炫酷的彈出式菜單特效

來源:懂視網 責編:小采 時間:2020-11-27 22:01:21
文檔

微信小程序實現炫酷的彈出式菜單特效

微信小程序實現炫酷的彈出式菜單特效:今天給大家帶來一個微信小程序的彈出是菜單效果,老規矩先上效果圖。(錄制的gif動畫有點卡,實際真機或是模擬器上很順暢) 先簡單說下思路: 1、首先在屏幕的某個位置放幾個懸浮按鈕,放幾個看你需要的功能 2、點擊最上層(wxml中最后一個就是最上層)的的按鈕
推薦度:
導讀微信小程序實現炫酷的彈出式菜單特效:今天給大家帶來一個微信小程序的彈出是菜單效果,老規矩先上效果圖。(錄制的gif動畫有點卡,實際真機或是模擬器上很順暢) 先簡單說下思路: 1、首先在屏幕的某個位置放幾個懸浮按鈕,放幾個看你需要的功能 2、點擊最上層(wxml中最后一個就是最上層)的的按鈕

今天給大家帶來一個微信小程序的彈出是菜單效果,老規矩先上效果圖。(錄制的gif動畫有點卡,實際真機或是模擬器上很順暢)

先簡單說下思路:

1、首先在屏幕的某個位置放幾個懸浮按鈕,放幾個看你需要的功能

2、點擊最上層(wxml中最后一個就是最上層)的的按鈕后增加背景遮罩,這個遮罩在我前面自定義modal彈框時有用到

3、分別對按鈕做旋轉和移動動畫和透明度,造成動畫差異就是位移的動畫距離不同

4、收起的時候回到原來位置并且讓透明度變成0就ok了

思路說完了,下面開始上實現代碼,這里同樣也是封裝成了組件,方便調用。

首先是wxml實現

<view class="drawer_screen" bindtap="showOrHide" wx:if="{{isShow}}" catchtouchmove="myCatchTouch"></view>
<view >
 <image src="../../img/add.png" class="buttom" animation="{{animDelLots}}" bindtap="deleteLots"></image>
 <image src="../../img/add.png" class="buttom" animation="{{animAdd}}" bindtap="add"></image>
 <image src="../../img/add.png" class="buttom" animation="{{animMain}}" bindtap="showOrHide"></image>
</view>

然后是wxss

//懸浮按鈕
.buttom{
 width: 100rpx;
 height: 100rpx;
 display: flex;
 flex-direction: row;
 position: fixed;
 bottom:60rpx;
 right: 60rpx;
 z-index: 1001;
}
.drawer_screen {
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 left: 0;
 right:0;
 bottom:0;
 z-index: 1000;
 background: #000;
 opacity: 0.5;
 overflow: hidden;
}
.drawer_box {
 overflow: hidden;
 position: fixed;
 z-index: 1001;
}

json文件

{
 "component": true,
 "usingComponents": {}
}

最后是js邏輯實現

// components/Menu/menu.js
var systemInfo = wx.getSystemInfoSync();
Component({
 /**
 * 組件的屬性列表
 */
 properties: {
 
 },
 
 /**
 * 組件的初始數據
 */
 data: {
 isShow: false,//是否已經彈出
 animMain: {},//旋轉動畫
 animAdd: {},//item位移,透明度
 animDelLots: {},//item位移,透明度
 },
 
 /**
 * 組件的方法列表
 */
 methods: {
 //點擊彈出或者收起
 showOrHide: function () {
 if (this.data.isShow) {
 //縮回動畫
 this.takeback();
 this.setData({
 isShow: false
 })
 } else {
 //彈出動畫
 this.popp();
 this.setData({
 isShow: true
 })
 }
 },
 add: function () {
 this.triggerEvent("addEvent")
 this.showOrHide()
 },
 deleteLots: function () {
 this.triggerEvent("deleteLotsEvent")
 this.showOrHide()
 },
 
 //彈出動畫
 popp: function () {
 //main按鈕順時針旋轉
 var animationMain = wx.createAnimation({
 duration: 500,
 timingFunction: 'ease-out'
 })
 var animationDelLots = wx.createAnimation({
 duration: 500,
 timingFunction: 'ease-out'
 })
 var animationAdd = wx.createAnimation({
 duration: 500,
 timingFunction: 'ease-out'
 })
 animationMain.rotateZ(180).step();
 animationDelLots.translate(0, -200 / 750 * systemInfo.windowWidth).rotateZ(180).opacity(1).step();
 animationAdd.translate(0, -320 / 750 * systemInfo.windowWidth).rotateZ(180).opacity(1).step();
 this.setData({
 animMain: animationMain.export(),
 animDelLots: animationDelLots.export(),
 animAdd: animationAdd.export(),
 })
 },
 //收回動畫
 takeback: function () {
 //main按鈕逆時針旋轉
 var animationMain = wx.createAnimation({
 duration: 500,
 timingFunction: 'ease-out'
 })
 var animationDelLots = wx.createAnimation({
 duration: 500,
 timingFunction: 'ease-out'
 })
 var animationAdd = wx.createAnimation({
 duration: 500,
 timingFunction: 'ease-out'
 })
 animationMain.rotateZ(0).step();
 animationDelLots.translate(0, 0).rotateZ(0).opacity(0).step();
 animationAdd.translate(0, 0).rotateZ(0).opacity(0).step();
 this.setData({
 animMain: animationMain.export(),
 animDelLots: animationDelLots.export(),
 animAdd: animationAdd.export(),
 })
 }
 },
 //解決滾動穿透問題
 myCatchTouch: function () {
 return
 }
})

在要調用的頁面json文件引用menu組件(我這里引用了兩個組件,還有一個是前面封裝的dialog組件)

"usingComponents": {
 "dialog": "/components/Dialog/dialog",
 "menu": "/components/Menu/menu"
 },

然后在調用的wxml中使用

<!--_addEvent 和 _deleteLotsEvent分別是彈出菜單里面按鈕對應的事件,需要在調用的js中實現 -->
<menu hidden id='menu' bind:addEvent="_addEvent" bind:deleteLotsEvent="_deleteLotsEvent" />

調用menu組件的js中實現菜單中item的點擊事件

 _addEvent: function(){
 //do something
 },
 _deleteLotsEvent: function(){
 //do something
 }

整體代碼實現就這么多,代碼比較簡單,如果有不清楚的童鞋,請留言,我將為你們解答。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

微信小程序實現炫酷的彈出式菜單特效

微信小程序實現炫酷的彈出式菜單特效:今天給大家帶來一個微信小程序的彈出是菜單效果,老規矩先上效果圖。(錄制的gif動畫有點卡,實際真機或是模擬器上很順暢) 先簡單說下思路: 1、首先在屏幕的某個位置放幾個懸浮按鈕,放幾個看你需要的功能 2、點擊最上層(wxml中最后一個就是最上層)的的按鈕
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top 主站蜘蛛池模板: 国产精品久久久久精 | 国产精品99久久久 | 亚洲综合日韩 | 国产成人91一区二区三区 | 欧美精品国产 | 日本不卡视频一区二区 | 亚洲欧洲精品成人久久曰影片 | 久久免费精品国产72精品剧情 | 欧美日韩亚洲一区二区三区在线观看 | 亚洲第一区se | 国产一区系列在线观看 | 国产成人高清一区二区私人 | 国产精品久久久久一区二区 | 国产中的精品一区的 | 亚洲欧美综合图片 | 视频二区 素人 欧美 日韩 | 成人欧美一区二区三区黑人 | 久久91精品国产91 | 亚洲欧美日韩在线 | 亚洲精品乱码久久久久久 | 国产成人精品一区二三区2022 | 成人日韩 | 91精品91久久久久久 | 日韩欧美在线综合 | 欧美日韩视频一区二区在线观看 | 香港经典a毛片免费观看…伊人色综合久久 | 国模吧双双大尺度炮交gogo | 国产成人黄网址在线视频 | 免费一区视频 | 一区高清 | 最新国产精品亚洲 | 国产精品26p | 亚洲日韩视频 | 国产福利一区二区 | 亚洲高清一区二区三区 | 亚洲va乱码一区二区三区 | 黄a免费 | 国产自在线拍 | 欧美嘿咻视频 | 久久精品2 | 国产日韩欧美综合在线 |