若干過ごしやすい日が続くと思えばまたまた暑くなったり・・・
皆様いかがお過ごしでしょうか。
「CHIZTEK(チズテク) 手描き地図検索」の開発チームです。
またまたWindows Vista Sidebar gadgetの話です。
実行中のSidebar gadgetにマウスカーソルが当たった時に
ふんわりと画像を浮かび上がらせて、
gadgetからマウスアウトした時にふんわりとそれがきえる・・・といった
アニメーションを割り振りたいなぁ、ということがよくあります。
その場合『そのgadgetのどこでもいいからカーソルがあたれば』
そのアニメーションを開始するきっかけとなります。
なので素直にbodyのonmouseoverやonmouseoutに記述するのではと思います。
しかし、そのbodyの上にdivタグなど、他の要素が配置されている場合はどうでしょうか?
実はちょっぴりうまくいかないのです・・・。
ざっくりご説明いたします。
要素Aに配置されている要素Bがあるとします。

カーソルが図のようにスーッと移動した場合、
どういった流れでイベントが発生するでしょうか?
1.要素Aonmouseover
2.要素B onmouseover
3.要素B onmouseout
4.要素Aonmouseout
となりそうですが、実際にはこういう流れでイベントが発生します。
1.要素Aonmouseover
2.要素Aonmouseout
3.要素B onmouseover
4.要素B onmouseout
5.要素Aonmouseover
6.要素Aonmouseout
要素Bに入るときに要素Aからカーソルが外れた、という扱いになるようです。
これはタイヘン!と思いきや、便利なイベントがありました。
onmouseenterとonmouseleave
この「onmouseenter」「onmouseleave」というイベントを使えば、
要素Aから要素Bに入る時に要素Aのマウスアウトが発生せず、当初想定していたような動きになります。
onmouseenterとonmouseleaveはIEでのみ使用できるイベントなので、
使えるチャンスが限定されてしまうのが残念なのですが、
幸いなことにVista Sideber gadgetでは使えます!
動作タイミングですが、gadgetにマウスをホバーした時に
普段は非表示になっているガジェットのハンドルが
ふんわりと表示されますがそのタイミングに近いと思います。
なにかと便利なイベントですので、是非試してみてくださいね!