基本的なMootoolsアニメーションを追加したWebサイトがあります。これが私が質問をしているウェブサイトのページです:
http://www.humsdrums.com/portfolio/webdesign.html
大きな画像の上にマウスを置くと、画像がフェードし、虫眼鏡がトゥイーンダウンすることに気付くでしょう。これが私がこれのために作った「Magnify」と呼ばれるMootoolsクラスです:
var Magnify = new Class({
Implements : [Options, Events],
options : {
},
initialize : function (item, image, options)
{
this.setOptions(options);
this.div = document.id(item);
this.img = $$(image);
this.tweenBackground = new Fx.Tween(this.div,{
duration:'250',
property:'background-position'
});
this.div.addEvent('mouseenter', this.reveal.bind(this));
this.div.addEvent('mouseleave', this.hide.bind(this));
},
reveal : function()
{
this.tweenBackground.cancel();
this.tweenBackground.start('175px -78px', '175px 90px');
this.img.tween('opacity', .15);
console.log('mouse over');
},
hide :function ()
{
this.tweenBackground.cancel();
this.tweenBackground.start('175px 90px', '175px -78px');
this.img.tween('opacity', 1);
}
});
次に、css idを取得して、これを実行する要素ごとにクラスのインスタンスを初期化する必要があります。
window.addEvent('domready', function()
{
var magnify1 = new Magnify('p1', '#p1 img');
var magnify2 = new Magnify('p2', '#p2 img');
var magnify3 = new Magnify('p3', '#p3 img');
var magnify4 = new Magnify('p4', '#p4 img');
});
私ができるようにしたいのは、この機能を持たせたい各要素に「拡大するので、個々のIDを使用して、毎回Mootoolsクラスの別のインスタンスを追加する必要がないようにする」というCSSクラスを与えることです。
要素をCSSクラスにして、それをMootoolsクラスに入れると、壊れます。それが壊れなかったとしても、Mootoolsは、1つだけがマウスオーバーされたときに、そのCSSクラスを持つすべての要素を同時にアニメートするように思われます。
「magnifyCSSクラスのどのインスタンスがマウスオーバーされているかをどのように検出しますか?私の唯一の考えは、「magnify」CSSクラスですべての要素を取得し、それらを配列に入れて、ホバーされているアイテムは、配列内のアイテムの1つと同じです。その方法や、それが最善の方法かどうかはわかりません。
どんな助けや提案も素晴らしいでしょう!もっとコードを見たいのか、もっと良い説明ができるのか教えてください。