star
[E-Mail]
2000/02/03(木) 11:10:25
ウィンドウの横幅の値を得るのに、
NSだと、window.innerWidth で値が取れるようなのですが、
IEでは上手くいきません。IEで同様の効果が得られるものってありますか?
レイヤーがWindowの右端から左端へ移動してまた右端から現れる…という感じのアニメーションを作りたいので一番右端の値=ウィンドウの横幅を知りたいのですが…。
star
[E-Mail]
2000/02/03(木) 13:43:13
とりあえず、Windowの右端から左端へ移動してまた右端へ…というアニメは作れました。
Netscapeの場合はwindow.innerWidthでwindowの横幅の値を使い、
IEの場合はleft=100%からスタートしてパーセンテージで移動させるようにしました。
(Netscapeでは何故かパーセンテージで移動させることができませんでした…)
ソースは以下の通りです。
------------
/* メニューを右から左へ移動させます */
var windowX=window.innerWidth;
var startPosNN=windowX; /* for NN */
var startPosIE=100; /* for IE */
function checkStartPos(){
clearTimeout(100);
if (document.layers) {document.layers.books.left=startPosNN; slideLayer(startPosNN);}
if (document.all) slideLayer(startPosIE);
}
function slideLayer(currentPos){
currentPos -= 2;
/* for NN */
if (document.layers){
document.layers.books.left=currentPos;
if (currentPos > -120) setTimeout('slideLayer('+ currentPos +')',10);
else {windowX=window.innerWidth;startPosNN=windowX; setTimeout('slideLayer('+startPosNN+')',10);}
}
/* for IE */
if (document.all) {
eval("document.all.books.style.left ='" + currentPos +"%'");
if (currentPos > -120) setTimeout('slideLayer('+ currentPos +')',10);
else setTimeout('slideLayer('+startPosIE+')',10);
}
}
---------end of script
かえるさんの言っていたclientWidthを使ってみようとしたのですが、どうやって使っていいのかわかりませんでした。
var windowX=body.clientWidth;
ではダメですよね?(^-^;;
どうやってつかったらいいのでしょう?
star
[E-Mail]
2000/02/03(木) 20:32:26
かえるさんご解答ありがとうございます。
早速やってみました。
が。
---
<BODY>
<SCRIPT LANGUAGE="JavaScript">
var windowX=window.document.body.clientWidth;
document.write(windowX);
</SCRIPT>
</BODY>
---
のように<BODY>の中に書き込んだ場合は上手くいくのですが、
---
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
var windowX=window.document.body.clientWidth;
</SCRIPT>
</HEAD>
---
のように<HEAD>の中から値を取ろうとすると、
「window.document.body.clientWidthはオブジェクトではありません」というエラーがでてしまいます。
私がやりたいのは後者なのですが、何か上手い方法はあるのでしょうか?