IT/제이쿼리모바일

제이쿼리모바일 swipe event

조원태 2017. 2. 2. 19:41
반응형

swipe event

version added: 1.0



설명 : 1 초 동안 30px 이상 (세로로 30px 미만)의 수평 드래그가 발생하면 트리거됩니다.


jQuery( window ).on( "swipe", function( event ) { ... } )


1 초 동안 30px 이상 (수직으로 30px 미만)의 수평 드래그가 발생했을 때 트리거되지만 다음과 같이 구성 할 수 있습니다.


$.event.special.swipe.scrollSupressionThreshold (default: 10px) – 이 수평 이동보다 더 많이 스크롤을 억제합니다.

$.event.special.swipe.durationThreshold (default: 1000ms) – 이보다 더 많은 시간이 걸리며 슬쩍하지 않습니다.

$.event.special.swipe.horizontalDistanceThreshold (default: 30px) – 스 와이프 가로 변위는 이보다 커야합니다.

$.event.special.swipe.verticalDistanceThreshold (default: 30px) – 스 와이프 수직 이동은 이보다 작아야합니다.



스 와이프 이벤트는 자신의 논리 또는 기능을 추가하도록 확장 될 수도 있습니다. 다음 방법을 확장 할 수 있습니다.


1. $.event.special.swipe.start Default:


function( event ) {

  var data = event.originalEvent.touches ?

      event.originalEvent.touches[ 0 ] : event;

  return {

      time: ( new Date() ).getTime(),

      coords: [ data.pageX, data.pageY ],

      origin: $( event.target )

    };

}


2. $.event.special.swipe.stop Default:


function( event ) {

  var data = event.originalEvent.touches ?

      event.originalEvent.touches[ 0 ] : event;

  return {

      time: ( new Date() ).getTime(),

      coords: [ data.pageX, data.pageY ]

    };

}


3. $.event.special.swipe.handleSwipe Default:


function( start, stop ) {

  if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&

    Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&

    Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {

 

    start.origin.trigger( "swipe" )

      .trigger( start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight" );

  }

}




예:

스 와이프 이벤트 캡처 및 실행에 대한 간단한 예


<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">

  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>swipe demo</title>

  <link rel="stylesheet" href="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">

  <script src="//code.jquery.com/jquery-1.10.2.min.js"></script>

  <script src="//code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

  <style>

  html, body { padding: 0; margin: 0; }

  html, .ui-mobile, .ui-mobile body {

    height: 105px;

  }

  .ui-mobile, .ui-mobile .ui-page {

    min-height: 105px;

  }

  #nav {

    font-size: 200%;

    width:17.1875em;

    margin:17px auto 0 auto;

  }

  #nav a {

    color: #777;

    border: 2px solid #777;

    background-color: #ccc;

    padding: 0.2em 0.6em;

    text-decoration: none;

    float: left;

    margin-right: 0.3em;

  }

  #nav a:hover {

    color: #999;

    border-color: #999;

    background: #eee;

  }

  #nav a.selected,

  #nav a.selected:hover {

    color: #0a0;

    border-color: #0a0;

    background: #afa;

  }

  div.box {

    width: 30em;

    height: 3em;

    background-color: #108040;

  }

  div.box.swipe {

    background-color: #7ACEF4;

  }

  </style>

</head>

<body>

 

<h3>Swipe the green rectangle to change its color:</h3>

<div class="box"></div>

 

<script>

$(function(){

  // Bind the swipeHandler callback function to the swipe event on div.box

  $( "div.box" ).on( "swipe", swipeHandler );

 

  // Callback function references the event target and adds the 'swipe' class to it

  function swipeHandler( event ){

    $( event.target ).addClass( "swipe" );

  }

});

</script>

 

</body>

</html>




반응형