Déplaçable div sans jQuery UI
Comme le dit le titre je suis en train de faire un div déplaçable sans l'aide de jQuery UI.
Cependant, je suis coincé avec le code ci-dessous. Je comprends que je doit utiliser la position de la souris par rapport à la div conteneur (dans lequel la div doit être de déplacement) et que je doit mettre sur les divs décalage par rapport à ces valeurs.
Je ne peux pas comprendre comment. Des pistes pour moi?
Ce code ne fonctionne pas (bien sûr) de travail:
var X, Y;
$(this).mousedown(function() {
$(this).offset({
left: X,
top: Y
});
});
$("#containerDiv").mousemove(function(event) {
X = event.pageX;
Y = event.pageY;
});
Vous devez vous connecter pour publier un commentaire.
Voici un vraiment exemple simple qui pourrait vous aider à démarrer:
Exemple: http://jsfiddle.net/Jge9z/
Pas si sûr à ce sujet. Il me semble que de glisser-déposer, vous auriez toujours souhaitez utiliser le décalage des éléments relatifs au document.
Si vous voulez dire que vous souhaitez limiter les faisant glisser sur une zone en particulier, c'est un problème plus complexe (mais toujours faisable).
mouseleave
événement, comme$("body").mouseleave(function(e) { $dragging = null; })
pour attraper relâcher le bouton enfoncé à l'extérieur de la fenêtre du navigateur.Voici un autre code mis à jour:
Démo: http://jsfiddle.net/tovic/Jge9z/31/
J'ai créé un plugin simple pour ce fil.
Démo: http://tovic.github.io/dte-project/jquery-draggable/index.html
$selected = $(this).parent();
ligne38:59
votre obligent les développeurs à utiliser un fixe de la structure html. vous êtes en supposant que les parents, ça va être la complètestructure
pour se déplacer, mais si au lieu de vous attribuer une classe comme le disentclass='draggableContainer'
vous pouvez faire quelque chose comme$selected = $(this).closest(".draggableContainer");
vous pouvez maintenant utiliser n'importe quelle structure html et de son retour au travail. Mais, en général, cool$hit
de travail vraiment coolplugin
que vous avez à réaliser si vous avezhandler events
à l'intérieur de la déplaçable conteneur de les activer, vous devez être sûr que ce que vous exécutez l'intérieur de vous la fonction de gestionnaire de venir de l'événement attendu et non pas de la mouseup (drag) de l'événement. Ou essayez d'utiliserevent.stopPropagation()
dans le plugin, j'ai essayé mais je ne pourrais pas l'arrêter. Je na sais exactement où le mettre.Voici ma contribution:
http://jsfiddle.net/g6m5t8co/1/
getBoundingClientRect()
pour#elem
, puis utilisez-rect detop
/left
à initdivTop
/divLeft
! Bonus: vous n'aurez plus besoin de tous les presets, oustyle
que ce soit ensuite.voici une autre façon de faire un déplaçable objet qui est centré sur le cliquez sur
http://jsfiddle.net/pixelass/fDcZS/
CSS
Glisser comme jQueryUI: JsFiddle
Vous pouvez faire glisser l'élément à partir d'un point quelconque sans bizarre de centrage.
Pas De Jquery Solution De Base
Les plus élémentaires déplaçable code serait :
et puis l'utilisation de la (non-jquery) :
ou en jquery :
Avis : l'élément traîné devrait avoir un
position:absolute
ouposition:fixed
appliqué pour la gauche,en haut du mouvement au travail...la codepen ci-dessous il a plus de fonctionnalités "avancées": dragStart, dragStop rappels, les classes css ajoutant à supprimer de la sélection de texte d'autres éléments lors d'un déplacement, et une baisse de la fonction...
la caisse de l'suivantes codepen :
http://codepen.io/anon/pen/VPPaEK
de son fond de définition d'un 'mousedown' événement sur l'élément qui doit être déplacé, et puis de liaison et de déliaison le document mousemove pour gérer le mouvement.
Déplaçable Poignée
afin de définir un déplaçable poignée de l'élément
Le code ci-dessus est utilisé comme suit :
L'ajout de CSS pour éliminer sélectionnable
Le problème, c'est que maintenant lorsque vous faites glisser le texte à l'intérieur de l'élément déplaçable est gênant d'être sélectionné à la non-utilisation...
C'est pourquoi, nous avons ajouté la
draggable
etdragging
classes de l'élément. qui va annuler ce comportement indésirable, et aussi d'ajouter un curseur de déplacement, pour l'affichage de cet élément déplaçableAjout D'Événements
Alors, maintenant que nous avons notre élément déplaçable, nous avons parfois besoin de faire appel à divers événements.
Chaque va passer la souris événement pour le gestionnaire spécifique
Enfin, c'est ce que nous obtenons...
Et d'utiliser cette :
noter que
e.target
est une référence à notre déplaçable élémentC'est la mienne.
http://jsfiddle.net/pd1vojsL/
3 déplaçable boutons dans un div, en faisant glisser contraint par des div.
Nécessite JQuery (uniquement):
Ce que j'ai vu ci-dessus est compliquer.....
Voici un peu de code peuvent se référer.
glisser,dragX,dragY peut placer la variable globale.
C'est un simple spectacle sur ce problème,mais il y a certains bug sur cette méthode.
Si c'est votre besoin maintenant,voici la Exemple ici.
Voici ma version simple.
La fonction draggable prend un objet jQuery comme argument.
Ici est une mise en œuvre sans l'aide de jQuery à tous -
http://thezillion.wordpress.com/2012/09/27/javascript-draggable-2-no-jquery
Incorporer le fichier JS (http://zillionhost.xtreemhost.com/tzdragg/tzdragg.js dans votre code HTML, et de mettre le code suivant -
Et le code est aussi facile à apprendre.
http://thezillion.wordpress.com/2012/08/29/javascript-draggable-no-jquery