¿Hay alguna manera de evitar que el usuario vea un fantasma de la imagen que está tratando de arrastrar (no le preocupa la seguridad de las imágenes, sino la experiencia).
He intentado esto que soluciona el problema con la selección azul en texto e imágenes, pero no la imagen fantasma:
img {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
(También intenté anidar la imagen dentro de un div con las mismas reglas aplicadas al div). Gracias
javascript
html
css
usuario885355
fuente
fuente
Respuestas:
Puede establecer el
draggable
atributofalse
en el código de marcado o JavaScript.fuente
<img id="myImage" src="http://placehold.it/150x150" draggable="false">
-moz-user-select: none
. Posible solución: Agregarpointer-events: none
.draggable
enfalse
deshabilitará completamente arrastrar y soltarCreo que puedes cambiar tu
en un
fuente
Intentalo:
e intenta evitar
fuente
Puede usar una propiedad CSS para deshabilitar imágenes en los navegadores webkit.
fuente
-ms-user-drag
,-moz-user-drag
yuser-drag
. ¡Una gran solución solo para CSS!Esto deshabilitará el arrastre de una imagen en todos los navegadores , al tiempo que preservará otros eventos, como hacer clic y desplazarse. Funciona siempre que haya HTML5, JS o CSS disponibles.
<img draggable="false" onmousedown="return false" style="user-drag: none" />
Si está seguro de que el usuario tendrá JS, solo necesita usar el atributo JS, etc. Para obtener más flexibilidad, busque ondragstart, onselectstart y algunos CSS de toque / toque de WebKit.
fuente
onmousedown="return false"
es suficiente. También es necesario evitar que el usuario seleccione la imagen mientras la arrastra, lo que les permitiría arrastrar la selección.Manejar el
dragstart
evento yreturn false
.fuente
Puede asignar una imagen fantasma alternativa si realmente necesita usar eventos de arrastre y no puede establecer draggable = false. Así que solo asigne un png en blanco como este:
fuente
setDragImage
, incluso si admiten arrastrar y soltar, por ejemplo, IE10 / 11.dragIcon.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
Coloque la imagen como fondo de un div vacío o debajo de un elemento transparente. Cuando el usuario hace clic en la imagen para arrastrar, está haciendo clic en un div.
Ver http://www.flickr.com/photos/thefella/5878724253/?f=hp
fuente
Para Firefox necesitas profundizar un poco más con esto:
Disfrutar.
fuente
Descubrí que para IE, debe agregar el atributo draggable = "false" a las imágenes y los anclajes para evitar el arrastre. Las opciones de CSS funcionan para todos los demás navegadores. Hice esto en jQuery:
fuente
Aquí hay una solución mucho más fácil que agregar oyentes de eventos vacíos. Solo configura
pointer-events: none
tu imagen. Si aún necesita que se pueda hacer clic en él, agregue un contenedor a su alrededor que active el evento.fuente
fuente
Probado en Firefox: ¡eliminar y volver a colocar la imagen funciona! Y también es transparente en la ejecución. Por ejemplo,
EDITAR : Esto funciona solo en IE y en Firefox, curiosamente. También agregué
draggable = false
en cada imagen. Todavía un fantasma con Chrome y Safari.EDIT 2 : la solución de imagen de fondo es realmente la mejor. ¡La única sutileza es que la
background-size
propiedad debe redefinirse cada vez que se cambia la imagen de fondo! O eso es lo que parecía desde mi lado. Mejor aún, tuve un problema con lasimg
etiquetas normales en IE, donde IE no pudo cambiar el tamaño de las imágenes. Ahora, las imágenes tienen las dimensiones correctas. Sencillo:Además, quizás considere aquellos:
fuente
Puede configurar la imagen que se muestra cuando se arrastra un elemento. Probado con Chrome.
setDragImage
utilizar
Alternativamente, como ya se mencionó en las respuestas, puede configurar
draggable="false"
el elemento HTML, si no es posible arrastrar el elemento en absoluto.fuente
Be-all-end-all, para no seleccionar ni arrastrar, con todos los prefijos del navegador:
También puede establecer el
draggable
atributo enfalse
. Usted puede hacer esto con HTML en línea:draggable="false"
con Javascript:elm.draggable = false
o con jQuery:elm.attr('draggable', false)
.También puede manejar la
onmousedown
función parareturn false
. Puede hacer esto con HTML en línea:,onmousedown="return false"
con Javascript:elm.onmousedown=()=>return false;
o con jQuery:elm.mousedown(()=>return false)
fuente
Esto funciona para mí, uso algunos scripts de lightbox
fuente