国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > 小程序 > 正文

微信小程序-可移動菜單的實現過程詳解

2020-03-21 15:53:30
字體:
來源:轉載
供稿:網友

前言

我們可以經常看到手機app里有的菜單欄是懸浮在首頁的,用戶可以拖動和點擊菜單欄進行交互,今天代碼君就教大家利用小程序的控件,實現一個可移動的菜單,效果圖是這樣的,要實現這樣的效果,需要引出我們今天的重要人物movable-view

movable-view屬性介紹

屬性名 作用 參數值
direction 設置movable-view的移動方向 屬性值有all、vertical、horizontal、none
inertia movable-view是否帶有慣性 true/false 默認是false
out-of-bounds 超過可移動區域后,movable-view是否還可以移動 true/false 默認是false
x 定義x軸方向的偏移,如果x的值不在可移動范圍內,會自動移動到可移動范圍;改變x的值會觸發動畫 number
y 定義y軸方向的偏移,如果y的值不在可移動范圍內,會自動移動到可移動范圍;改變y的值會觸發動畫 number
damping 阻尼系數,用于控制x或y改變時的動畫和過界回彈的動畫,值越大移動越快 number 默認是20
friction 摩擦系數,用于控制慣性滑動的動畫,值越大摩擦力越大,滑動越快停止;必須大于0,否則會被設置成默認值 number默認是2

實現可移動菜單

一、wxml界面的實現

<view class='title-line'>movable</view><movable-area class="moveArea"><movable-view class='moveView' x="{{x}}" y="{{y}}" damping="40" direction="all" inertia='true'>菜單</movable-view></movable-area><button class='button' type='primary' size='mini' bindtap='moveView'>點我隨機滾動小方塊</button><button class='button' type='primary' size='mini' bindtap='stopMove'>點我停止隨機滾動</button>

界面布局比較簡單,需要注意的幾點

  1. movable-view 必須設置width和height屬性,不設置默認為10px
  2. movable-view 默認為絕對定位,top和left屬性為0px
  3. 當movable-view小于movable-area時,movable-view的移動范圍是在movable-area內;當movable-view大于movable-area時,movable-view的移動范圍必須包含movable-area(x軸方向和y軸方向分開考慮)
  4. movable-view必須在<movable-area/>組件中,并且必須是直接子節點,否則不能移動

二、xxx.js隨機移動實現的邏輯

Page({data: {x: 0,y: 0,isStop:false,},moveView:function(e){var that = this;setTimeout(function () {that.move(that);}, 1000);},stopMove: function (e) {this.setData({isStop: true})},move: function (that){var randowX = that.GetRandomNum(1, 200);var randowY = that.GetRandomNum(1, 400);that.setData({x: randowX,y:randowY,})if(!that.data.isStop){setTimeout(function () {that.move(that);}, 100);}},//隨機函數GetRandomNum: function (Min, Max) {var Range = Max - Min;var Rand = Math.random();return (Min + Math.round(Rand * Range));},

js里面需要講解的內容比較多

  1. x/y 用來控制菜單欄的位置,isStop停止移動
  2. 介紹一個js延遲執行事件的方法setTimeout(function () { }, 1000),逗號左邊執行事件的方法,右邊設置延遲多久執行事件,1000對應的是一秒
  3. GetRandomNum 這個方法是我自定義的,用于生成隨機數字,計算滾動的距離
  4. 還有一個需要注意點是,要事件監聽更新數據的時候,this對象在程序中隨時會改變,此時需要執行 var that = this;把this對象傳遞給that就可以解決上面遇見的問題

三、wxss樣式

.moveArea {height: 400px;width:200px;background: red;margin: 10px;}.moveView {height: 100rpx;width: 100rpx;line-height: 100rpx;background: blue;border-radius: 50%;text-align: center;margin: 10rpx;}

今天講解的樣式有一下幾個

如何把圖形從方形變成圓形?

border-radius 這是今天的主角,把他的值設置成50%,就由方形變成圓形了,這個屬性是設置圓角的,設置10%,是有一點圓角的方形

設置內容垂直居中方法

這是代碼君的一個小竅門,把height和line-height設置成一樣,他自動會垂直居中

總結

今天講解的是可移動的菜單,本身實現是沒什么難度的,我又引入了幾個知識點,一個是推遲事件函數的使用還有就是幾個css樣式設置的小竅門,讀者回去認真記住使用規則,后面我們陸續會用上,好啦,今天的課程就到這~

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 江北区| 万盛区| 阳西县| 新干县| 诏安县| 长宁区| 新竹市| 且末县| 澳门| 兰坪| 义马市| 平武县| 吴忠市| 洪泽县| 偃师市| 绥宁县| 类乌齐县| 太保市| 盐津县| 凤山市| 察哈| 安福县| 宜兰县| 德化县| 阿克陶县| 凤庆县| 天柱县| 扎囊县| 浪卡子县| 阜新| 德昌县| 麻栗坡县| 托里县| 桑植县| 云和县| 佛教| 肥城市| 赤峰市| 色达县| 麻阳| 盐城市|