Existe-t-il un moyen d'empêcher l'utilisateur de voir un fantôme de l'image qu'il essaie de faire glisser (pas de souci de sécurité des images, mais de l'expérience).
J'ai essayé ceci qui corrige le problème avec 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 dans un div avec les mêmes règles appliquées au div). Merci
javascript
html
css
user885355
la source
la source
Réponses:
Vous pouvez définir l'
draggable
attributfalse
dans le balisage ou le code JavaScript.la source
<img id="myImage" src="http://placehold.it/150x150" draggable="false">
-moz-user-select: none
. Solution possible: ajouterpointer-events: none
.draggable
surfalse
désactivera complètement le glisser-déposer.Je pense que tu peux changer ton
dans une
la source
Essayez-le:
et essayez d'éviter
la source
Vous pouvez utiliser une propriété CSS pour désactiver les images dans les navigateurs Webkit.
la source
-ms-user-drag
,-moz-user-drag
etuser-drag
. Une excellente solution CSS uniquement!Cela désactivera le glissement d'une image dans tous les navigateurs , tout en préservant d'autres événements tels que le clic et le survol. Fonctionne tant que HTML5, JS ou CSS sont disponibles.
<img draggable="false" onmousedown="return false" style="user-drag: none" />
Si vous êtes sûr que l'utilisateur aura JS, il vous suffit d'utiliser l'attribut JS, etc.
la source
onmousedown="return false"
c'est suffisant. Il est également nécessaire d'éviter que l'utilisateur sélectionne l'image tout en la faisant glisser, ce qui lui permettrait alors de faire glisser la sélection.Gérez l'
dragstart
événement etreturn false
.la source
Vous pouvez attribuer une autre image fantôme si vous avez vraiment besoin d'utiliser des événements de glissement et que vous ne pouvez pas définir draggable = false. Alors attribuez simplement un png vierge comme ceci:
la source
setDragImage
, même s'ils prennent en charge le glisser-déposer, par exemple IE10 / 11.dragIcon.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
Placez l'image en arrière-plan d'un div vide ou sous un élément transparent. Lorsque l'utilisateur clique sur l'image à faire glisser, il clique sur un div.
Voir http://www.flickr.com/photos/thefella/5878724253/?f=hp
la source
Pour Firefox, vous devez aller un peu plus loin avec ceci:
Prendre plaisir.
la source
J'ai trouvé que pour IE, vous devez ajouter l'attribut draggable = "false" aux images et aux ancres pour empêcher le glissement. les options CSS fonctionnent pour tous les autres navigateurs. J'ai fait cela dans jQuery:
la source
Il existe ici une solution beaucoup plus simple que d'ajouter des écouteurs d'événements vides. Réglez simplement
pointer-events: none
votre image. Si vous avez toujours besoin qu'il soit cliquable, ajoutez un conteneur autour de lui qui déclenche l'événement.la source
la source
Testé sur Firefox: supprimer et remettre l'image fonctionne! Et c'est aussi transparent lors de l'exécution. Par exemple,
EDIT : Cela ne fonctionne que sur IE et sur Firefox, étrangement. J'ai également ajouté
draggable = false
sur chaque image. Encore un fantôme avec Chrome et Safari.EDIT 2 : La solution d'image d'arrière-plan est vraiment la meilleure. La seule subtilité est que la
background-size
propriété doit être redéfinie à chaque fois que l'image de fond est modifiée! Ou alors, c'est à quoi ça ressemblait de mon côté. Mieux encore, j'ai eu un problème avec lesimg
balises normales sous IE, où IE n'a pas réussi à redimensionner les images. Maintenant, les images ont les bonnes dimensions. Facile:Aussi, considérez peut-être ceux-ci:
la source
Vous pouvez définir l'image qui s'affiche lorsqu'un élément est déplacé. Testé avec Chrome.
setDragImage
utilisation
Alternativement, comme déjà mentionné dans les réponses, vous pouvez définir
draggable="false"
l'élément HTML, sinon ne pas pouvoir faire glisser l'élément du tout n'est pas un problème.la source
Le be-all-end-all, sans sélection ni glissement, avec tous les préfixes de navigateur:
Vous pouvez également définir l'
draggable
attribut surfalse
. Vous pouvez le faire avec HTML en ligne:draggable="false"
avec Javascript:elm.draggable = false
ou avec jQuery:elm.attr('draggable', false)
.Vous pouvez également gérer la
onmousedown
fonction enreturn false
. Vous pouvez le faire avec HTML en ligne:,onmousedown="return false"
avec Javascript:,elm.onmousedown=()=>return false;
ou avec jQuery:elm.mousedown(()=>return false)
la source
Ce travail pour moi, j'utilise des scripts lightbox
la source