簡體   English   中英

為什么Android點擊區域的半徑比觸摸開始更寬? 我怎樣才能使它保持一致?

[英]Why does Android click area have a wider radius than touchstart? How can I make it consistent?

我有一個簡單的矩形錨標簽。 我使用jQuery來響應clicktouchstart事件,具體如下:

  $(document).ready(function() {
      $("#button").on("click touchstart", function(e) {
          $("#log").append(e.type + "<br/>");
      });
  });

HTML看起來像這樣:

<div id="wrapper">
  <a id="button" href="#">&nbsp;</a>
</div>
<div id="log">Log:<br></div>

CSS很簡單:

  #wrapper {
      padding:50px;
  }
  #button {
      display:block;
      width:200px;
      height:40px;
      text-decoration:none;
      color:#333;
      background-color:#efefef;
      border:0px;
      padding:0px;
      margin:0px;
  }

我把它作為一個演示來構建,以顯示我正在談論的問題。

當您點擊矩形錨點的邊緣時,僅觸發click事件。 點擊該區域的中心時,會觸發clicktouchstart

為什么只有click似乎是通過胖指檢測觸發的? 有沒有辦法讓touchstart事件也能用胖手指?


動畫的問題

只有在邊緣點擊時觸發點擊

觸摸點擊僅

預期的行為,兩個事件

觸摸兩個事件

問題

觸摸設備上的click事件旨在模擬基於點擊點擊 這里存在一個很大的問題,因為觸摸界面與桌面界面明顯不同。 最大的區別? 鼠標點擊比手指觸摸要精確得多。 為了確保桌面站點和應用程序至少在某種程度上有用,您設計的行為就是這樣設計的。 這樣,移動電話上的用戶仍然能夠點擊小鏈接,即使他的手指實際上太不精確而無法准確地點擊鏈接。

解決方案

你不會喜歡這個,但解決方案就是不要在觸摸屏設備上使用click事件。 這通常沒有完成,因為click事件實際上是在touchEnd事件發生后大約300ms觸發的,因此無論如何都會感到遲鈍(延遲是等待雙擊),現在你有另一個不使用它的理由。

困難的部分

同時具有觸摸屏鼠標的設備。 您的選擇是否想要打擾那些。 就個人而言,我傾向於與他們一起模仿點擊並在移動設備上使用touch事件時生活在額外的滯后,但如果你花時間,你可以創建更精心制作的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM