drag.xbl
は、
Mozilla で
HTML 文書を表示する際に、
特定の要素をマウスのドラッグで閲覧者が移動可能にするための
XBL 部品です。
文書の著者は手軽に要素をドラッグ可能にできます。
Web のハイパーテキスト文書では、
サイト内や文書内の案内や文書の内容に関する補助 (詳細)
情報などの従
となる内容が含まれていることが多々あります。
Web ブラウザで文書を表示する時にこのような情報を常時表示しておいた方が利便性が高いこともありますが、
そのために本文の表示領域が狭まったり、
本文の上に被さったりして、かえって見にくくなることもあります。
この問題の一つの解決策は、文書の補助的な要素をマウスのドラッグによって移動可能とすることです。 一般にプログラムでよく使う機能を集めたボタンをドラッグ可能な小さな窓に入れておくという方法はよく用いられており、 見た目さえ適切に設計すれば利用者も抵抗なく利用することができるはずです。 しかし、現在文書内の要素をドラッグ可能にするための標準的な方法は存在せず、 著者が文書ごとにスクリプトを用いて実装する必要がありました。
Mozilla
(というか Gecko)
は、 XBL
という言語を使って要素の表現を制御できます。
W3C の
CSS 水準 2 では表示については基本的に
静的
な指定しかできません。
しかし XBL と組み合わせることにより、
条件判断を含めたり閲覧者の操作に応じた動作を行ったりすることが可能になります。
(実際に現在の Mozilla には、移動文字
(marquee) が
XBL を使って実装されています。)
drag.xbl
は、要素
(に対応する
また、移動中のスタイル (たとえば、マウス指示子を移動時のものとするとか。) を CSS を使って指定することができます。
drag.xbl
を持っていってください。-moz-binding
属性は Mozilla
(Gecko) の独自拡張です。
もじら組の
Mozillaの独自拡張CSSは使わないでくださいという文書に目を通して理解した上でお使い下さい。)
.movable-element {
-moz-binding: url('https://suika.suikawiki.org/www/style/ui/drag.xbl#simple-drag');
}
/* 移動可能な時、級 DRAGABLE
が追加されます。 */
.movable-element.DRAGABLE {
position: absolute /* または fixed
*/;
margin: 0 /* 位置計算の都合上 0 でないといけません。 */;
top: 4em; /* 例。 */
left: 1em;
}
/* 移動中の時、級 DRAGING
が追加されます。 */
.movable-element.DRAGING {
cursor: move; /* 例。 */
}
margin
は (少なくても左と上は) 零でなければなりません。-moz-binding
と一緒に
behavior: url('https://suika.suikawiki.org/www/style/ui/drag.htc')
とも書いてしまうと、 WinIE
にも対応してしまいます:)
MPL 1.1/GPL 2.0/LGPL 2.1とします。