移動觸摸屏的div拖動Demo

話說我剛剛從PC的Web開發轉到移動的Web開發……javascript

當前移動Web開發不得不面對強大的流行的Android,IOS這兩大觸摸屏系統啊,畢竟這是熱門啊,用戶都在這裏。css

此次由於開發須要,我得試着作一個背景能夠拖動的div頁面。當一切都在PC上作完以後,轉到手機進行測試,居然無效啊,拖動無效。通過調試發現mousemove事件(還有mousedown,mouseup)的clientX的屬性在PC端幾款瀏覽器都沒問題,在平板的Android瀏覽器和QQ瀏覽器下都是未定義undefined。html

當時想是否是由於event.clientX在移動端不支持,而後就試了一下offsetXscreenX,結果都同樣,這個時候都快崩潰了我。java

按說mousedown,mouseup,mousemove和touchstart,touchend,touchmove之間是能夠互通的,也就是說通常面向pc開發的mouse時間對touch事件有效,聽說是效率有差別。可是pc上測試沒有任何問題,在手機上就是無效。
而後百度了好久好久……jquery

終於在一個討論touch相關事件的例子中看到別人已經通過測試的e.touches[0].pageX,光這個屬性仍是不夠的,發現使用jquery爲div綁定touch事件後這個屬性也是未定義,必須使用原生的addEventListener。瀏覽器

最後,貼上demo的代碼,但願給遇到一樣問題的你提供幫助。ide

 

  
  
           
  
  
  1. <html>   
  2. <head>   
  3.     <meta charset="UTF-8"> 
  4.     <style type="text/Css"> 
  5.         body{background-color:#000000;}  
  6.         .window{position:absolute;z-index:1;overflow:hidden;width:600px;height:400px;background-color:red;left: 0px;}  
  7.         .dragme{position:relative;background-p_w_picpath:url('img/testbg.png');width:800px;height:400px;}   
  8.     </style>   
  9.  
  10. <script type="text/javascript" charset="utf-8" src="js/jquery.min.js"></script> 
  11. <script type="text/javascript">   
  12. var isdrag=false;   
  13. var tx,x;    
  14. $(function(){  
  15.     document.getElementById("moveid").addEventListener('touchend',function(){  
  16.         sdrag = false;  
  17.     });  
  18.     document.getElementById("moveid").addEventListener('touchstart',selectmouse);  
  19.     document.getElementById("moveid").addEventListener('touchmove',movemouse);  
  20. });  
  21. function movemouse(e){   
  22.   if (isdrag){   
  23.    var n = tx + e.touches[0].pageX - x;  
  24.    $("#moveid").css("left",n);  
  25.    return false;   
  26.    }   
  27. }   
  28.  
  29. function selectmouse(e){   
  30.    isdrag = true;   
  31.    tx = parseInt(document.getElementById("moveid").style.left+0);   
  32.    x = e.touches[0].pageX;    
  33.    return false;   
  34. }   
  35. </script>   
  36.  
  37. </head>   
  38. <body>   
  39. <div align="left" class="window"> 
  40.      <div id="moveid"  class="dragme"> 
  41.         這是一個能夠經過觸摸屏拖動的demo<br> 
  42.             這個demo花費了我半天時間,緣由是之前歷來沒有作過面向觸摸屏的Web,按說mousedown,mouseup,mousemove和touchstart,touchend,touchmove  
  43.             之間是能夠互通的,也就是說通常面向pc開發的mouse時間對touch事件有效,聽說是效率有差別。可是pc上測試沒有任何問題,在手機上就是無效。  
  44.             而後……  
  45.             而後百度了好久好久……  
  46.           
  47.      </div> 
  48.  </div> 
  49. </html>
相關文章
相關標籤/搜索