微信小程序?qū)崿F(xiàn)可拖動(dòng)懸浮圖標(biāo)(包括按鈕角標(biāo)的實(shí)現(xiàn))
在制作商城類微信小程序的過(guò)程中,我們經(jīng)常會(huì)碰到需要增加可拖動(dòng)懸浮圖標(biāo)的情況,本文簡(jiǎn)單的介紹一下可拖動(dòng)懸浮按鈕的實(shí)現(xiàn)。
運(yùn)行截圖:
主要代碼:
js:
var startPoint Page({ data: { //按鈕位置參數(shù) buttonTop: 0, buttonLeft: 0, windowHeight: '', windowWidth: '', //角標(biāo)顯示數(shù)字 corner_data:0, }, onLoad:function(){ //定義角標(biāo)數(shù)字 this.setData({ corner_data:3 }) // 獲取購(gòu)物車控件適配參數(shù) var that =this; wx.getSystemInfo({ success: function (res) { console.log(res); // 屏幕寬度、高度 console.log('height=' + res.windowHeight); console.log('width=' + res.windowWidth); // 高度,寬度 單位為px that.setData({ windowHeight: res.windowHeight, windowWidth: res.windowWidth, buttonTop:res.windowHeight*0.70,//這里定義按鈕的初始位置 buttonLeft:res.windowWidth*0.70,//這里定義按鈕的初始位置 }) } }) }, //可拖動(dòng)懸浮按鈕點(diǎn)擊事件 btn_Suspension_click:function(){ //這里是點(diǎn)擊購(gòu)物車之后將要執(zhí)行的操作 wx.showToast({ title: '點(diǎn)擊成功', icon:'success', duration:1000 }) }, //以下是按鈕拖動(dòng)事件 buttonStart: function (e) { startPoint = e.touches[0]//獲取拖動(dòng)開始點(diǎn) }, buttonMove: function (e) { var endPoint = e.touches[e.touches.length - 1]//獲取拖動(dòng)結(jié)束點(diǎn) //計(jì)算在X軸上拖動(dòng)的距離和在Y軸上拖動(dòng)的距離 var translateX = endPoint.clientX - startPoint.clientX var translateY = endPoint.clientY - startPoint.clientY startPoint = endPoint//重置開始位置 var buttonTop = this.data.buttonTop + translateY var buttonLeft = this.data.buttonLeft + translateX //判斷是移動(dòng)否超出屏幕 if (buttonLeft+50 >= this.data.windowWidth){ buttonLeft = this.data.windowWidth-50; } if (buttonLeft<=0){ buttonLeft=0; } if (buttonTop<=0){ buttonTop=0 } if (buttonTop + 50 >= this.data.windowHeight){ buttonTop = this.data.windowHeight-50; } this.setData({ buttonTop: buttonTop, buttonLeft: buttonLeft }) }, buttonEnd: function (e) { } })
wxml:
<!--可拖動(dòng)按鈕控件表--> <!--buttonStart和buttonEnd一定不能用catch事件,否則按鈕點(diǎn)擊事件會(huì)失效--> <view class="btn_Suspension" bindtap="btn_Suspension_click" catchtouchmove="buttonMove" bindtouchstart="buttonStart" bindtouchend="buttonEnd" style="top:{{buttonTop}}px;left:{{buttonLeft}}px;"> <image class="Suspension_logo" src="../images/Suspension.png"></image><!--這里是按鈕圖標(biāo),下載地址會(huì)在文章底部說(shuō)明--> <view wx:if="{{corner_data==0}}"></view> <view wx:else> <view class="cornorMark"> <text>{{corner_data}}</text> </view> </view> </view>
wxss:
Page{ background: #f5f5f5; } /**可拖動(dòng)懸浮按鈕樣式表**/ .btn_Suspension{ position: fixed; height: 100rpx; width: 100rpx; background-color: rgba(255, 255, 255, 0.755); border-radius: 100%; display: flex; align-items: center; justify-content: center; z-index: 99999; box-shadow: 1px 0px 1px 1px #ede7e7; } .Suspension_logo{ position:absolute; height:50%; width:50%; left:23%; top:27% } .cornorMark{ position:absolute; background: rgb(242, 109, 38); border:1px solid rgb(242, 109, 38); border-radius: 100px; width:30rpx; height:30rpx; top:-17rpx; right:3rpx; color:#fff; font-size: 12px; text-align: center; } .cornorMark text{ position:absolute; width:100%; left:0%; text-align: center; top:-1px; }
圖標(biāo)素材下載地址:
Iconfont阿里巴巴矢量圖標(biāo)庫(kù):https://www.iconfont.cn/
到此這篇關(guān)于微信小程序?qū)崿F(xiàn)可拖動(dòng)懸浮圖標(biāo)(包括按鈕角標(biāo)的實(shí)現(xiàn))的文章就介紹到這了,更多相關(guān)小程序?qū)崿F(xiàn)懸浮圖標(biāo)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
包含中國(guó)城市的javascript對(duì)象實(shí)例
這篇文章主要介紹了包含中國(guó)城市的javascript對(duì)象,以一個(gè)javascript的json數(shù)據(jù)格式存儲(chǔ)為例分析了javascript存儲(chǔ)城市信息的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08JSON字符串和對(duì)象相互轉(zhuǎn)換實(shí)例分析
這篇文章主要介紹了JSON字符串和對(duì)象相互轉(zhuǎn)換的方法,結(jié)合實(shí)例形式分析了json格式數(shù)據(jù)的轉(zhuǎn)換方法,涉及javascript正則與字符串操作的相關(guān)技巧,需要的朋友可以參考下2016-06-06用iframe實(shí)現(xiàn)不刷新整個(gè)頁(yè)面上傳圖片的實(shí)例
下面小編就為大家?guī)?lái)一篇用iframe實(shí)現(xiàn)不刷新整個(gè)頁(yè)面上傳圖片的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11javascript級(jí)聯(lián)下拉列表實(shí)例代碼(自寫)
javascript下拉菜單想必大家在瀏覽網(wǎng)頁(yè)的時(shí)候都會(huì)看到吧,已不是那么陌生了,本文介紹使用javascript實(shí)現(xiàn)級(jí)聯(lián)下拉列表實(shí)例,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助2013-05-05Javascript類庫(kù)的頂層對(duì)象名用戶體驗(yàn)分析
針對(duì)jQuery、Ext、KISSY三者類庫(kù)的對(duì)比及分析已經(jīng)很多了,但多數(shù)是從功能和設(shè)計(jì)的角度切入,因此本篇文章決定換一個(gè)特殊的角度,從各類庫(kù)的頂層對(duì)象名的鍵盤輸入的體驗(yàn)上來(lái)對(duì)這三個(gè)類庫(kù)進(jìn)行比較。2010-10-10JS+XML 省份和城市之間的聯(lián)動(dòng)實(shí)現(xiàn)代碼
用JS來(lái)操作一個(gè)XML文檔來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的表單聯(lián)動(dòng)2009-10-10Javascript類定義語(yǔ)法,私有成員、受保護(hù)成員、靜態(tài)成員等介紹
JS只是一門支持面向?qū)ο缶幊痰恼Z(yǔ)言,通過(guò)OO可以讓我們的代碼組織更加人性化??墒桥c傳統(tǒng)基與類的面向?qū)幊陶Z(yǔ)言不同它沒有類概念并且沒成員訪問修飾符。這多少會(huì)給我們編程工作會(huì)帶來(lái)一些束縛2011-12-12