Web標準技術によるKISSの実装もあります。→HTML5 KISS


からだ かみかざり ぱんつ ぶら くつした みずぎ せえらあ上 みずいろ上 ぴんく上 せえらあ下 みずいろ下 ぴんく下

マウスドラッグによるオブジェクト移動のサンプル

能書き

CSS2ポジショニングに対応したブラウザ(具体的にはIE 4以降やNN 4以降など)以外では、画像は重ね合わせて表示されません。その場合にはお手数をかけ恐縮ですが

などしてご利用ください:-)。

JavaScriptに対応していないブラウザとかJavaScriptをオフにしている環境の場合、画像をマウスでつかんで移動させることはできません。NN 4ではJavaScriptがオフになるとスタイルシートも自動的にオフになるので、そもそも重ね合わせて表示されません。

画像を動かす方法については

のいずれかであることを想定しています。

マウス入力を受け取る方法については、DOM Level 2 Eventsによる方法は1999年の時点ではMozilla/Netscape 6以外に対応ブラウザがなかったようなので、

のいずれかであることを想定しています。

画像には、本当はPNGを使いたいのですが、NN 4がPNGの透過に対応していなかったり、MacOS版のIEがバージョン4.5までPNGにまったく対応していなかったりするので(5.0で対応)、無圧縮のGIFを使うことでUNISYSの特許を回避していました(2004年6月20日で特許は期限切れになりましたが、そのまま無圧縮GIFを使い続けています)。

動作確認

Firefox 12 (Win)、Windows Consumer PreviewのInternet Explorer 10の全ドキュメントモード/Internet Explorer 9.0.3 (標準モード及び互換表示)/8/6 SP1/4.01 SP1 (Win)、Google Chrome (Win)、Safari 5.1.5 (Win)、Opera 11.62 (Win)で動作を確認しました。

動作したとかしないとか(に限らず)報告はいつでも歓迎します。掲示板メールでどうぞ。

他のサイト

DHTMLを使ってオブジェクトをマウスドラッグで動かすという発想はとくに目新しいものではなく、同じようなスクリプトを公開しているサイトもすでにいくつかあります。

更新履歴

動作確認ブラウザの追加やリンクの追加は必ずしも更新履歴に含めていません。

2010/10/15

WebKitとOperaに対応。これらのブラウザにはwindow.eventオブジェクトが存在するのに、オブジェクトの内容(とくにbuttonプロパティの意味)がW3C DOM準拠でIE互換ではないため問題が起きていた。そこでイベントハンドラの引数にイベントオブジェクトが存在する場合はそちらを優先して使用するように変更。

コード変更後に再確認を行なっていない古いブラウザを動作確認対象から削除。

2000/11/15

Netscape 6 正式版で動作を確認。

2000/10/07

Netscape 6 PR3で動作を確認。

2000/09/16

最新のMozillaでバグが修正されたので対策コードを取り除く。

2000/08/22

Netscape 6 PR2でも動くように対策する。この対策はまた別のバグを利用したものだったりする。

2000/08/22

Netscape 6 PR2で動かないことを確認。最新(8/22現在)のMozillaでは修正済みなのだが別のバグがあって完全動作しないのでそれに対する対策コードを入れる。

2000/04/06

Netscape 6 PR1で動作確認。

2000/04/03

IE 5(Mac)ではレイヤのサイズを明示しないとドラッグ時に再描画が正常に行われないので、サイズ指定を追加。というかそれが正しい振る舞いかもしれない。

2000/02/13
DOM Level 2が2/8にCandidate Recommendationになっていたのでリンクを差し替える。
2000/02/06
HTML Validatorがいつの間にかHTTPヘッダでのcharset指定に対応したようなので、METAを削除してHTTPヘッダでの指定に変更。これでNN2でも文字化けしなくなった。
1999/12/27
Mozillaの最新のビルドで誤判定してエラーになるので、Netscape 4のイベントモデルの判定にcaptureEventsの存在チェックを追加。というかAddEventListenerが使えるときは旧バージョン互換の処理はいっさい行わないほうがいいかも。
1999/10/03
CSS Validatorに文句を言われないよう、layer-background-colorの設定をJSSに変更(外道?)。
1999/10/02
Mozillaの最新のNightly Buildで誤判定してエラーになるので、Netscape 4.xのイベントモデルの判定にwindow.Eventの存在チェックを追加。
1999/09/20
Mozillaの最新のNightly BuildでHTML 4.0 StrictのDOCTYPE宣言を付加するとエラーになるので(それが正しいのだが)、スタイルからleftとtopを取得するときはparseIntして、設定するときは数値の後ろに"px"を付加するように変更。

Copyright © 1999-2011 M.Kimura (emk) All rights reserved.