html5の drag&drop APIを使ったWEBアプリを作成しようとしています。

ページはこちらになります。

http://www.puzzledeanatomy.net/%E3%82%A2%E3%83%97%E3%83%AA%E3%83%86%E3%82%B9%E3%83%88/

下のカラータイルをドラッグエリアに配置したいのですが
スクロールして表示する下の部分では配置できず、別の所に配置されてしまいます。
※ウィンドウをスクロールしない範囲でなら自由に配置可能です。

そこで質問なのですが

①この動作は仕様でしょうか?仕様でないのであれば何か足りない設定があるのでしょうか?
②仕様であれば同じ動作をさせるために他に方法があるのでしょうか?

html初心者質問の内容に無礼な箇所がある場合申し訳ございません。
どうぞご教授の程よろしくお願い致します。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/09/02 19:59:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Cherenkov No.1

回答回数1504ベストアンサー獲得回数493

ポイント300pt

evt.clientXでスクロール位置とは関係ないブラウザ上で表示されている位置を取得していて、
次に #droparea 内でのposition:absoluteで(祖先にposition:relativeがいないから)bodyからの絶対位置に配置されるからかな?
適当ですがこうすればそれっぽくみえました。

target.style.left = evt.clientX+document.documentElement.scrollLeft-64+'px';
target.style.top = evt.clientY+document.documentElement.scrollTop-64+'px';

参考 JavaScript メモ / チップス イベント座標とイベントエレメント座標 ARTEMIS


質問文にあるリンク先ページで参考にしたであろうサイトでは、ドラッグする要素とドロップ先がスクロールしない位置にあるため、スクロールが考慮されていません。
HTML5 Drag and dropを実装してみよう | Dress Cording



Draggable | jQuery UI
こっち使ったほうが簡単でいいと思います。

id:hossiiii

早速のご回答ありがとうございます。
ご教授頂いたおすすめのサイトの方がシンプルで
自分の実現したい事が簡単にできそうです。

また配置するだけでなく、drop時に配置した座標から
あたり判定を出すなどの処理も行いたいのですが可能なようですね。

非常に助かりました。ありがとうございます。

2013/09/02 12:36:34

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません