255 votes

CSS /JS pour empêcher le déplacement d'une image fantôme ?

Existe-t-il un moyen d'empêcher l'utilisateur de voir un fantôme de l'image qu'il essaie de faire glisser (il ne s'agit pas de la sécurité des images, mais de l'expérience) ?

J'ai essayé ceci qui résout le problème de la sélection bleue sur le texte et les images mais pas l'image fantôme :

img {
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -o-user-select: none;
  user-select: none;
}

(J'ai également essayé d'imbriquer l'image à l'intérieur d'un div avec les mêmes règles appliquées au div). Merci

1 votes

Voir cette réponse : stackoverflow.com/a/4211930/1060487 la question peut être dupliquée

322voto

BoltClock Points 249668

Vous pouvez régler le draggable à l'attribut false dans le balisage ou le code JavaScript.

// As a jQuery method: $('#myImage').attr('draggable', false);
document.getElementById('myImage').setAttribute('draggable', false);

<img id="myImage" src="http://placehold.it/150x150">

151voto

Max Points 1103

Je pense que vous pouvez changer votre

img {
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -o-user-select: none;
  user-select: none;
}

en un

img {
  -webkit-user-drag: none;
  -khtml-user-drag: none;
  -moz-user-drag: none;
  -o-user-drag: none;
  user-drag: none;
}

4 votes

@victorsosa C'est vrai, mais une norme de facto reste une norme, W3C ou pas. En d'autres termes, si tous les navigateurs la prennent en charge, c'est bon à prendre. Rappelez-vous que beaucoup de choses du W3C ont commencé par être propriétaires, comme AJAX.

8 votes

Cette solution ne fonctionne pas dans IE11 et Firefox 57.0.

61voto

Erik Rybalkin Points 212

Essayez-le :

img {
  pointer-events: none;
}

et essayer d'éviter

* {
  pointer-events: none;
}

42 votes

C'est une mauvaise solution, car elle supprime toute possibilité d'interaction avec l'élément. Le PO demande seulement de désactiver la fonctionnalité de "glisser" d'un élément, et non de désactiver entièrement toute interaction avec l'élément à l'aide d'un pointeur.

9 votes

@Chad c'est vrai mais il est possible d'envelopper l'image et d'ajouter l'écouteur d'événement à l'enveloppe alors que l'image n'a plus d'image fantôme.

28voto

Beejor Points 3677

Ceci désactivera la fonction de glisser pour une image dans tous les navigateurs tout en préservant les autres événements tels que les clics et les survols. Fonctionne tant que l'un des éléments HTML5, JS ou CSS est disponible.

<img draggable="false" onmousedown="return false" style="user-drag: none" />

Si vous êtes sûr que l'utilisateur disposera de JS, il vous suffit d'utiliser l'attribut JS, etc. Pour plus de flexibilité, consultez ondragstart, onselectstart et certaines CSS WebKit tap/touch.

25voto

Ashwani Points 273

Vous pouvez utiliser une propriété CSS pour désactiver les images dans les navigateurs webkit.

img{-webkit-user-drag: none;}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X