Gibt es eine Möglichkeit, den Benutzer daran zu hindern, einen Geist des Bildes zu sehen, das er ziehen möchte (keine Sorge um die Sicherheit der Bilder, sondern um die Erfahrung).
Ich habe dies versucht, wodurch das Problem mit der blauen Auswahl für Text und Bilder behoben wird, nicht jedoch für das Geisterbild:
img {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
(Ich habe auch versucht, das Bild in einem Div zu verschachteln, wobei die gleichen Regeln für das Div gelten). Vielen Dank
javascript
html
css
user885355
quelle
quelle
Antworten:
Sie können das
draggable
Attributfalse
entweder im Markup- oder im JavaScript-Code festlegen .quelle
<img id="myImage" src="http://placehold.it/150x150" draggable="false">
-moz-user-select: none
. Mögliche Lösung: Hinzufügenpointer-events: none
.draggable
auffalse
wird Drag & Drop vollständig deaktiviert.Ich denke du kannst deine ändern
in ein
quelle
Versuch es:
und versuchen zu vermeiden
quelle
Sie können eine CSS-Eigenschaft verwenden, um Bilder in Webkit-Browsern zu deaktivieren.
quelle
-ms-user-drag
,-moz-user-drag
unduser-drag
. Eine großartige CSS-Lösung!Dadurch wird das Ziehen für ein Bild in allen Browsern deaktiviert , während andere Ereignisse wie Klicken und Bewegen beibehalten werden. Funktioniert, solange HTML5, JS oder CSS verfügbar sind.
<img draggable="false" onmousedown="return false" style="user-drag: none" />
Wenn Sie sicher sind, dass der Benutzer über JS verfügt, müssen Sie nur das JS-Attribut usw. verwenden. Weitere Flexibilität finden Sie in ondragstart, onselectstart und einigen WebKit-Tap / Touch-CSS.
quelle
onmousedown="return false"
ist ausreichend. Es ist auch erforderlich, um zu vermeiden, dass der Benutzer das Bild beim Ziehen auswählt, wodurch er die Auswahl ziehen kann.Behandeln Sie die
dragstart
Veranstaltung undreturn false
.quelle
Sie können ein alternatives Geisterbild zuweisen, wenn Sie wirklich Drag-Ereignisse verwenden müssen und draggable = false nicht festlegen können. Weisen Sie einfach ein leeres PNG wie folgt zu:
quelle
setDragImage
Drag & Drop, z. B. IE10 / 11.dragIcon.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
Platzieren Sie das Bild als Hintergrund eines leeren Divs oder unter einem transparenten Element. Wenn der Benutzer zum Ziehen auf das Bild klickt, klickt er auf ein Div.
Siehe http://www.flickr.com/photos/thefella/5878724253/?f=hp
quelle
Für Firefox müssen Sie etwas tiefer gehen:
Genießen.
quelle
Ich habe festgestellt, dass Sie für IE das Attribut draggable = "false" zu Bildern und Ankern hinzufügen müssen, um ein Ziehen zu verhindern. Die CSS-Optionen funktionieren für alle anderen Browser. Ich habe das in jQuery gemacht:
quelle
Hier gibt es eine viel einfachere Lösung als das Hinzufügen leerer Ereignis-Listener. Stellen
pointer-events: none
Sie einfach Ihr Bild ein. Wenn Sie weiterhin darauf klicken müssen, fügen Sie einen Container hinzu, der das Ereignis auslöst.quelle
quelle
Auf Firefox getestet: Das Entfernen und Zurücksetzen des Bildes funktioniert! Und es ist auch bei der Ausführung transparent. Zum Beispiel,
BEARBEITEN : Dies funktioniert seltsamerweise nur im IE und in Firefox. Ich habe auch
draggable = false
jedes Bild hinzugefügt . Immer noch ein Geist mit Chrome und Safari.EDIT 2 : Die Hintergrundbildlösung ist wirklich die beste. Die einzige Subtilität ist, dass die
background-size
Eigenschaft jedes Mal neu definiert werden muss, wenn das Hintergrundbild geändert wird! Zumindest sah es von meiner Seite so aus. Besser noch, ich hatte ein Problem mit normalenimg
Tags unter IE, bei denen IE die Größe der Bilder nicht ändern konnte. Jetzt haben die Bilder die richtigen Abmessungen. Einfach:Betrachten Sie vielleicht auch diese:
quelle
Sie können das Bild festlegen, das beim Ziehen eines Elements angezeigt wird. Getestet mit Chrome.
setDragImage
verwenden
Alternativ können Sie, wie bereits in den Antworten erwähnt,
draggable="false"
das HTML-Element festlegen , wenn es kein Problem ist, das Element überhaupt nicht ziehen zu können.quelle
Das A und O ohne Auswahl oder Ziehen mit allen Browserpräfixen:
Sie können das
draggable
Attribut auch auf festlegenfalse
. Sie können dies mit Inline-HTML :draggable="false"
, mit Javascript:elm.draggable = false
oder mit jQuery: tunelm.attr('draggable', false)
.Sie können die
onmousedown
Funktion auch an handhabenreturn false
. Sie können dies mit Inline-HTML :onmousedown="return false"
, mit Javascript:elm.onmousedown=()=>return false;
oder mit jQuery: tun.elm.mousedown(()=>return false)
quelle
Diese Arbeit für mich, ich benutze einige Lightbox-Skripte
quelle