<view>
<button catchtouchmove="buttonMove" bindtouchstart="buttonStart" bindtouchend="buttonEnd" catchtap="evaluateEvt" style="top:{{buttonTop}}px;left:{{buttonLeft}}px;width: 80px;height:50px;position:fixed;background:#ff6700;line-height:50px;font-size: 28rpx;;color:#fff;padding: 0;font-weight: 500;">
<view>課程建議</view>
</button>
</view>
let startPoint;
Page({
data: {
windowHeight: '',
windowWidth: '',
buttonTop: 0,
buttonLeft: 0
},
onLoad: function () {
// 計算高寬度,占滿window
let that = this;
// 高度自適應
wx.getSystemInfo({
success: function (res) {
that.setData({
windowHeight: res.windowHeight,
windowWidth: res.windowWidth,
buttonTop: res.windowHeight - 120, //懸浮按鈕初始位置
buttonLeft: res.windowWidth - 100 //懸浮按鈕初始位置
});
}
});
},
buttonStart: function (e) {
startPoint = e.touches[0]
},
buttonMove: function (e) {
let endPoint = e.touches[e.touches.length - 1];
let translateX = endPoint.clientX - startPoint.clientX;
let translateY = endPoint.clientY - startPoint.clientY;
startPoint = endPoint;
let buttonTop = this.data.buttonTop + translateY;
let buttonLeft = this.data.buttonLeft + translateX;
//判斷是移動否超出屏幕 -- 80為按鈕的寬度
if (buttonLeft + 80 >= this.data.windowWidth){
buttonLeft = this.data.windowWidth - 80;
}
if (buttonLeft <= 0){
buttonLeft = 0;
}
if (buttonTop <= 0){
buttonTop = 0
}
// 50是按鈕的高度
if (buttonTop + 50 >= this.data.windowHeight){
buttonTop = this.data.windowHeight - 50;
}
this.setData({
buttonTop: buttonTop,
buttonLeft: buttonLeft
})
},
buttonEnd: function (e) {
},
// 點擊懸浮按鈕
evaluateEvt(){
console.log('點擊懸浮按鈕')
},
})