
YUIでクリックした場所へ移動
( 注意 : このページでは、クリックすると、クリックされた位置を示すダイアログが表示されます。)
今回は、YAHOO.util.Eventのメソッドを利用して、カーソルでクリックした場所を取得し、そこへYAHOO.util.Motionにより移動してみます。
クリックした場所を取得する
YAHOO.util.Eventには、カーソルでクリックした場所を、クロスブラウザで取得してくれるメソッド getPageXとgetPageY、getXYがあり、次のように記述します。getPageX(event) //left位置 を返す getPageY(event) //top位置 を返す getXY(event) //位置配列 [left,top] を返す
getPageXは、IEならpageXにscrollLeftを足したページ内の位置を返し、それ以外のブラウザではpageX、pageXが無ければclientXを返します。 getPageYは同様に、scrollTopとclientYをクロスブラウザに処理します。そして、getXYは、そのpageXとpageYを配列の形式で返します。
簡単にいうと、たとえば、スクロールした先の位置でもスクロール分を加算した値で返します。つまり、これで取得したXとYは、そのまま CSSのleftとtopの値として利用することができるわけです。
それでは、試しに、カーソルでクリックした場所を取得してみます。
どこでも好きな場所をクリックしてください。クリックされた場所のgetPageXとgetPageYとgetXYの値が、ダイアログで表示されます。
このコードは次の通りです。
<script type="text/javascript"
src="../../build/yahoo/yahoo-min.js"></script>
<script type="text/javascript"
src="../../build/animation/animation-min.js"></script>
<script type="text/javascript"
src="../../build/event/event-min.js"></script>
<script type="text/javascript"
src="../../build/dom/dom-min.js"></script>
<script type="text/javascript">
//ネームスペースを作成
YAHOO.namespace('myTest20070710');
YAHOO.myTest20070710.chkXY = function (ev){
var E = YAHOO.util.Event; //YAHOO.util.Eventショートカット
var x = E.getPageX(ev);
var y = E.getPageY(ev);
var xy = E.getXY(ev);
alert(
'getPageXは、'+x +'?n'+
'getPageYは、'+y +'?n'+
'getXYは、'+xy +'?n'
);
};
//クリックしたらYAHOO.myTest20070710.chkXYを実行
YAHOO.util.Event.addListener(document,'click',YAHOO.myTest20070710.chkXY);
</script>
それでは、次にこれを利用して、クリックした場所へDOM要素が移動するアニメーションを作ってみます。







