jQuery UI Déplaçable + CSS Transform Causes “Sauter”
EDIT: je l'ai résolu. Mais StackOverflow n'est pas de me laisser marquer ma réponse comme la solution, j'ai donc tout simplement ne vais pas.
Je vais avoir un problème quant à l'utilisation Déplaçable avec un CSS transformé parent. En gros, j'ai besoin d'utiliser le positionnement absolu pour frayer un Déplaçable div directement sous le curseur. Lorsque le positionnement absolu est utilisé avec des CSS transforme, l'élément déplaçable fait un peu de saut d'obstacles de droit que le glissement a lieu. Après le saut a lieu, le comportement se poursuit comme prévu. Le saut ne se produit pas si aucune des transformations sont appliquées à la déplaçable ou le div parent.
Ici un violon qui montre exactement ce que le problème est le suivant:
http://jsfiddle.net/qBubN/7/
body {
background-color: blue;
}
#draggable {
position: absolute;
left: 50px;
top: 50px;
background-color: rgba(0,0,0,0.5);
border: 1px solid black;
width: 350px;
height: 350px;
color: white;
-moz-transform: scale(0.5);
-webkit-transform: scale(0.5);
transform: scale(0.5);}
$("#draggable").draggable({
scroll: true,
distance: 5,
grid : [ 10, 10 ],
start: function (event, ui) {
}
});
<html>
<body>
<div id="draggable">
Hello!
</div>
</body>
</html>
Déjà essayé l'application de ce patch, en vain. Il y a une (bonne) chance ce correctif est trop vieux pour travailler. Il ya aussi une chance que je suis en appliquant le patch à tort. Webkit et jQuery déplaçable saut
- Pour plus de clarté, je suis sur Firefox 21.0
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la solution.
La solution est de les éviter complètement
position:absolute;
lors de l'utilisation de Déplaçable et CSS transforme. Vous pouvez obtenir facilement manipuler quoi que ce soit d'une façon absolue/fenêtre/whatever coordonnées en relatif, c'est ce que j'ai fait.Dans mon cas, j'ai été fraie un élément Déplaçable en dessous de la souris. J'ai calculé la position relative basée sur la position de la souris avec le décalage() de l'élément (à la fois dans la fenêtre de coordonnées) et ensuite divisé par l'ampleur de la div parent.
Voici un extrait:
containment
est mise à l'échelle, cela ne fonctionne pas bien. Voici une solution: cerdiogenes.blogspot.com.br/2015/01/...Une solution beaucoup plus simple consiste à envelopper l'échelle du contenu avec un autre div et définir à être déplaçable à la place.
position:absolute;
est en effet problématique. J'ai cependant trouvé une solution alternative qui empêche le saut, tout en gardant unabsolute
base pour les coordonnées et le maintenir en position, en retournant le css position derelative
surmousedown
, et de le restaurer àabsolute
surmouseup
, telles que les suivantes:Il fonctionne bien pour les événements de la souris. Et pour résoudre le problème pour les événements tactiles, ainsi que les touchpunch' plugin, j'ai également dû annuler ', cliquez sur' événements (pour les mobiles et tactiles modalité seulement).
Expansion sur "raghugolconda" top réponse:
J'ai eu de la vitesse de déplacement et de sauter des problèmes avec jQueryUI déplaçable et CSS transform: scale()
L'image conteneur est évolutive avec le curseur de zoom, la place rouge est déplaçable.
Ce qui s'est passé quand j'ai essayé de faire glisser le rouge élément:
Correctif:
Calculer la fraction de la valeur de l'échelle) à partir de jQuery curseur.
Voici mon curseur que transformations de l'image contenant:
Remplacer jQuery UI déplaçable glisser et commencer fonctions.
Dans glisser vous modifiez la vitesse de déplacement (à l'échelle de 0,9 signifie drag_speed = 1 /0.9 = 1.11 )
Voici mon exemple: