前端 html h5 移動端 手機端 仿ios左滑刪除效果


實現功能:左滑列表項(<li class="route-item" ></li>),出現刪除按鈕(<div class="removeJs">刪除</div>)。

js部分的代碼如下:

 1 window.addEventListener('load',function(){
 2     var initX;
 3     var moveX;
 4     var X = 0;
 5     var objX = 0;
 6     var width=$(".removeJs").width();//按鈕的寬度(removeJs修改為按鈕的className)
 7     var liClassName=".route-item";//li的className(route-item修改為li的className)
 8     $("body").on("touchstart",liClassName,function (event) {
 9         var obj=this;
10             initX = event.targetTouches[0].pageX;
11             objX =(obj.style.WebkitTransform.replace(/translateX\(/g,"").replace(/px\)/g,""))*1;
12         if( objX == 0){
13             $("body").on('touchmove',liClassName,function(event) {
14                 // event.preventDefault();
15                 var obj=this;
16                     moveX = event.targetTouches[0].pageX;
17                     X = moveX - initX;
18                     if (X > 0) {
19                         obj.style.WebkitTransform = "translateX(" + 0 + "px)";
20                     }
21                     else if (X < 0) {
22                         var l = Math.abs(X);
23                         obj.style.WebkitTransform = "translateX(" + -l + "px)";
24                         if(l>width){
25                             l=width;
26                             obj.style.WebkitTransform = "translateX(" + -l + "px)";
27                         }
28                     }
29             });
30         }
31         else if(objX<0){
32             $("body").on("touchmove",liClassName,function (event) {
33                 // event.preventDefault();
34                 var obj=this;
35                     moveX = event.targetTouches[0].pageX;
36                     X = moveX - initX;
37                     if (X > 0) {
38                         var r = -width + Math.abs(X);
39                         obj.style.WebkitTransform = "translateX(" + r + "px)";
40                         if(r>0){
41                             r=0;
42                             obj.style.WebkitTransform = "translateX(" + r + "px)";
43                         }
44                     }
45                     else {     //向左滑動
46                         obj.style.WebkitTransform = "translateX(" + -width + "px)";
47                     }
48             });
49         }
50     })
51     $("body").on("touchend",liClassName,function (event) {
52         var obj=this;
53             objX =(obj.style.WebkitTransform.replace(/translateX\(/g,"").replace(/px\)/g,""))*1;
54             if(objX>-width/2){
55                 obj.style.WebkitTransform = "translateX(" + 0 + "px)";
56             }else{
57                 obj.style.WebkitTransform = "translateX(" + -width + "px)";
58             }
59     })
60 })
View Code

ps:實際項目中,只需修改如下兩行代碼即可:

var width=$(".removeJs").width();
var liClassName=".route-item";

 注意touchmove事件:當手指在屏幕上滑動的時候連續地觸發。在這個事件發生期間,調用preventDefault()事件可以阻止滾動,如果設置了e.preventDefault(),那么列表將無法上下滾動

 

ps:

touchstart事件:當手指觸摸屏幕時候觸發,即使已經有一個手指放在屏幕上也會觸發。

  touchmove事件:當手指在屏幕上滑動的時候連續地觸發。在這個事件發生期間,調用preventDefault()事件可以阻止滾動。

  touchend事件:當手指從屏幕上離開的時候觸發。

  touchcancel事件:當系統停止跟蹤觸摸的時候觸發。關於這個事件的確切出發時間,文檔中並沒有具體說明,咱們只能去猜測了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM