J'ai besoin d'une liste déplaçable pour mobile avec les meilleures performances
J'utilise un plugin jQuety mais pas assez de performances
S'il vous plaît dites-moi une bibliothèque javascript pour faire glisser avec de hautes performances
Je préfère le polymère ou réagis de façon toile Je vous remercie

-4
Ali.MD 14 juil. 2015 à 02:09

3 réponses

Meilleure réponse

J'ai trouvé interactjs. C'est la meilleure performance que j'aie jamais vue!

// Target elements with the "draggable" class
interact('.draggable')
  .draggable({
    // Enable inertial throwing
    inertia: true,
    // Keep the element within the area of it's parent
    restrict: {
      restriction: "parent",
      endOnly: true,
      elementRect: { top: 0, left: 0, bottom: 1, right: 1 }
    },

    // Call this function on every dragmove event
    onmove: dragMoveListener,
    // Call this function on every dragend event
    onend: function (event) {
      var textEl = event.target.querySelector('p');

      textEl && (textEl.textContent =
        'moved a distance of '
        + (Math.sqrt(event.dx * event.dx +
                     event.dy * event.dy)|0) + 'px');
    }
  });

  function dragMoveListener (event) {
    var target = event.target,
        // keep the dragged position in the data-x/data-y attributes
        x = (parseFloat(target.getAttribute('data-x')) || 0) + event.dx,
        y = (parseFloat(target.getAttribute('data-y')) || 0) + event.dy;

    // Translate the element
    target.style.webkitTransform =
    target.style.transform =
      'translate(' + x + 'px, ' + y + 'px)';

    // Update the posiion attributes
    target.setAttribute('data-x', x);
    target.setAttribute('data-y', y);
  }

  // This is used later in the resizing demo
  window.dragMoveListener = dragMoveListener;
#drag-1, #drag-2 {
  width: 25%;
  height: 100%;
  min-height: 6.5em;
  margin: 10%;

  background-color: #29e;
  color: white;

  border-radius: 0.75em;
  padding: 4%;

  -webkit-transform: translate(0px, 0px);
          transform: translate(0px, 0px);
}

#drag-me::before {
  content: "#" attr(id);
  font-weight: bold;
}
<script src="//cdnjs.cloudflare.com/ajax/libs/interact.js/1.2.4/interact.min.js"></script>

<div id="drag-1" class="draggable">
  <p> You can drag one element </p>
</div>
<div id="drag-2" class="draggable">
    <p> with each pointer </p>
</div>
0
Peter Mortensen 9 mai 2016 à 18:32

Pour de meilleures performances sur mobile, remplacez translate par translate3d et ajoutez un troisième argument de 0:

'translate3d(' + x + 'px, ' + y + 'px, 0)';
1
Peter Mortensen 9 mai 2016 à 18:29

L'élément iron-list peut vous être utile. Vous pouvez le télécharger et consulter sa documentation ici.

1
Ben Thomas 14 juil. 2015 à 08:44