画像をドラッグすると、マウスを押したままにすると半透明のゴースト画像が表示されます。
CSS / JSを適用して、特定の部分でこの効果を取り除く方法はありますか?
画像をドラッグすると、マウスを押したままにすると半透明のゴースト画像が表示されます。
CSS / JSを適用して、特定の部分でこの効果を取り除く方法はありますか?
最も簡単な方法は、非常に大きく、画面から離れた位置に座標を設定x
することですy
。setDragImage
例えば:
element.addEventListener('dragstart', function(event) {
event.dataTransfer.setDragImage(element, -99999, -99999);
}, false);
渡す実際の要素は実際には重要でsetDragImage
はありません。ここでは便宜上同じ要素を使用します。
ブラウザでこれを無効にする唯一の方法(Safariでも同じことを行います)は、要素(または)のイベントfalse
から戻り、残りのドラッグ操作をjavascriptで処理することです。onmousedown
img
event.preventDefault()
ほとんどすべての主要なJavaScriptライブラリは、「ドラッグ」と「ドロップ」をサポートしています。あなたは彼らのコードを出発点として使うことができます、あるいはあなたがすでにあなたのページでライブラリを使っているならそれを完全に使うことができます。
draggable="false"
画像に属性を追加するだけです。また、コンテナを追加しdiv
ます。
例えば
<div draggable="true">
<img draggable="false" src="your/path/to/image.png"/>
Optional Text
<div>
また、追加
function handleDragStart(e) {
// other code
var dragIcon = document.createElement('img');
dragIcon.src = 'another/image/path.png';
e.dataTransfer.setDragImage(dragIcon, -10, -10);
// other code
}
imgタグ付きの実際の画像の代わりに、cssの背景画像を使用してみることができます。
ondragstart
イベントからfalseを返す必要があります。私は自分でこの問題を抱えていました、そしてそれが私がそれを解決した方法です。これはIE7でも問題です。問題は、IEのドラッグアンドドロップAPI、html5への標準化、およびFirefoxによるその後の実装です。
ドラッグアンドドロップにjavascriptライブラリを使用するという他の提案は機能しません。(私はすでにjquery UIを使用していました)これはFirefoxの最近のものであり、jQueryUIはそれを説明していないようです。
私はそれがブラウザの振る舞い/機能だと思います。それを処理できる特定のFFCSSスタイルがわかりません。
Firefoxのコードを変更して独自のfirefoxを作成することをお勧めします。プログラム以外でそれを行うための何らかの手段を探しているなら、superuser.comに投稿する必要があると思います:P
about:config
これをオフにするFirefoxのオプションがあります---nglayout.enable_drag_images
しかし、明らかにそれはあなたのためだけに機能します。すべての訪問者のためにそれを削除したいと思いますか?
ドラッグアンドドロップを実行したい場合は、jQueryUIまたは別のJSライブラリを試してみてください。他の要素は非常に簡単に移動できるはずであり、Timがそれらの1つで言ったような背景画像を使用できます。
そのもう1つの利点は、CSSスプライト効果を使用してHTTPリクエストを減らすことができることです。jQuery UIを使用してジグソーパズルを作成しました。これは実際には1つの画像だけですが、複数のように見えます。