這篇文章主要介紹微信小程序中怎么制作圖片拖拽功能,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

站在用戶的角度思考問題,與客戶深入溝通,找到新區(qū)網(wǎng)站設(shè)計與新區(qū)網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務覆蓋新區(qū)地區(qū)。
1.編寫頁面結(jié)構(gòu):moveimg.wxml
<view class="container" style="height:{{screenHeight}}px;" >
<view class="cnt">
<image class="image-style" src="../uploads/2.jpg" style="width:
{{imgwidth}}px;height:{{imgheight}}px;"bindtouchstart="startEvent"
bindtouchmove="moveEvent"bindload="imageLoad"animation="
{{animationData}}"bindtouchend="endEvent">
</image>
</view>
</view>2.編寫頁面樣式:moveimg.wxss
.container {
box-sizing:border-box;
padding:1rem;
}
.cnt{
width:100%;
height:70%;
border: 1px solid #ccc;
position:relative;
overflow: hidden;
z-index:9999;
}
.image-style{
-webkit-transform:translate(-38px,0px);
}3.設(shè)置數(shù)據(jù):moveimg.js
var app = getApp()
Page({
data: {
imgwidth:0,
imgheight:0,
animationData: {},
movex:0,
movey:0,
x:0,
y:0,
},
onLoad: function() {
// 頁面初始化 options為頁面跳轉(zhuǎn)所帶來的參數(shù)
var _this = this;
wx.getSystemInfo({
success: function(res) {
_this.setData({
screenHeight: res.windowHeight,
screenWidth: res.windowWidth,
});
}
});
},
onReady:function(){
// 頁面渲染完成
//實例化一個動畫
this.animation = wx.createAnimation({
duration: 1000,
timingFunction: 'linear',//均勻
transformOrigin: "left top 0px",
})
},
imageLoad: function(e) {
var _this=this;
//1.框的寬高
var cnt_offetw=_this.data.screenWidth-38,
cnt_offeth=(_this.data.screenHeight-38)*0.7;
//2.獲取圖片真實寬度
var $width=e.detail.width, //獲取圖片真實寬度
$height=e.detail.height,
ratio=$width/$height; //圖片的真實寬高比例
//3.進行判斷:當圖片小于框時候,圖片大小等于框大小,當大于框的時候,則成比例呈現(xiàn)
var viewWidth=_this.data.screenWidth; //設(shè)置圖片固定寬度值,
var viewHeight=parseInt(viewWidth/ratio); //計算的高度值
if (viewHeight< cnt_offeth) {
viewHeight=cnt_offeth;
}
_this.setData({
imgwidth:viewWidth,
imgheight:viewHeight,
cnt_boxw:cnt_offetw,
cnt_boxh:cnt_offeth,
})
},
startEvent:function(e){
//1.獲取鼠標點擊下去的
this.setData({
startx: e.touches[0].pageX,
starty: e.touches[0].pageY
})
},
moveEvent: function(e) {
var _this=this;
//2.鼠標移動的位置
var pageX = e.touches[0].pageX;
var pageY = e.touches[0].pageY;
var x,y;
//3.記住初始化圖片x,y
var endx=_this.data.x,endy=_this.data.y;
//4.判斷
var w_x=_this.data.imgwidth-_this.data.cnt_boxw;//x拖拽值:圖片寬-框的寬
var h_y=parseInt(_this.data.imgheight-_this.data.cnt_boxh);//y拖拽值:圖片高-框高
var DistanceX = pageX - _this.data.startx;//x:當鼠標點擊到移動的點之間的距離
var DistanceY =pageY - _this.data.starty;//y:當鼠標點擊到移動的點之間的距離
if (DistanceX>0){
//往右移動 如果當前的值大于等于0時則不移動,否則當前值加上鼠標拖拽的距離
if (endx >= 0) {
x = 0;
} else {
x = endx + DistanceX;
}
}else{
//往左移動:x拖拽值大于等于當前的值,說明已經(jīng)到邊上了,就等于拖拽值,否則當前的值加上鼠標拖拽的距離
if (w_x >= endx) {
x = -w_x;
} else {
x = endx + DistanceX;
}
}
if (DistanceY>0){
//往下移動:如果當前的值大于等于0時則不移動,否則當前值加上鼠標拖拽的距離
if(endy>=0){
y =0;
}else{
y = endy + DistanceY;
}
}else{
//往上移動:y拖拽值大于等于當前的值,說明已經(jīng)到邊上了,就等于拖拽值,否則當前的值加上鼠標拖拽的距離
if(-endy==h_y||-endy>h_y){
y=-h_y;
console.log("da0")
}else{
y=endy+DistanceY;
console.log("da 1")
}
}
setTimeout(function() {
_this.animation.translate(x, y).step();
_this.setData({
animationData: this.animation.export()
})
}.bind(this), 0)
_this.setData({
x:x,
y:y,
})
endx=x;endy=y;//記住這次的圖片移動的范圍
_this.data.startx=pageX;_this.data.starty=pageY;// 每移動一次把上一次的點作為原點
},
endEvent:function(){
clearTimeout(function(){
this.animation.translate(this.data.x,this.data.y).step();
this.setData({
animationData: this.animation.export()
})
});
}
})由于上次做的這個有問題,并沒有記錄上一次移動的效果。所以這次我使用了洪荒之力,修改下代碼。
以上是“微信小程序中怎么制作圖片拖拽功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
文章名稱:微信小程序中怎么制作圖片拖拽功能
標題路徑:http://chinadenli.net/article17/goghgj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、ChatGPT、App開發(fā)、微信小程序、云服務器、自適應網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)