Home > イヌでもわかるJavaScript講座 お品書き
イヌでもわかるJavaScript講座 お品書き へ戻ります
イヌでもわかるJavaScript講座


Step.34 - 画面をスクロールさせる


フレームを使って、1画面を映画のエンディングのスーパーみたいにスクロールさせて メッセージを流してみます。


Step テーマ
● window.scroll 画面をスクロールさせる。

実行例


下のフレームが実行結果です



リスト -フレームを表示するHTML-


<FRAMESET ROWS="*,60">
<FRAME SRC="scroll0b.htm" NAME="first">
<FRAME SRC="scroll0c.htm" NAME="second">
</FRAMESET>


リスト -下に表示するHTML-


<body onload="myScroll()">
<script type="text/javascript"><!--
myY = 0;
function myScroll(){
     window.scroll( 0, myY );
     myY=myY + 2;
     if ( myY == 300 ) myY = 0;
     setTimeout( "myScroll()", 100 );
}
// --></script>
<p align="center">
<br><br><br><br>
Tatsuya's Home Page<br>
イヌでもわかるJavaScript講座<br>
この講座のサンプルを無断で使用することを禁じない<br>
ご意見・ご感想をお待ちしております<br>
このホームページは、リンクフリーです<br>
また、相互リンクしてくださる方は、メールをください<br>
<br><br><br><br><br><br><br><br><br><br>
</p>


サンプルだけの HTMLは こちらへ

説明


今回フレームをつかったので、HTMLファイルは3つになります。
下に表示する HTML が今回のサンプルになります。

映画のエンディングのように文字が流れるのは、ただ、人間がスクロールバーで画面をスクロールさせることを、JavaScriptでしているだけです。
myY = 0;
function myScroll(){
     window.scroll( 0, myY );
     myY = myY + 2;
     if ( myY == 300 ) myY = 0;
     setTimeout( "myScroll()", 100 );
}

上記の関数を <BODY>タグの onload で呼んでいます。
<body onload="myScroll()">
※ onload は、Step.32 参照


window.scroll () これが、画面をスクロールさせます。

パラメータは、window.scroll ( X , Y ) です。
X , Y がそれぞれの座標で左上が0の開始位置です。
指定した座標へ、画面を移動させます。

今回は縦(下から上へ)にスクロールさせるので、X座標は0固定です。

あとは問題無いでしょう。
Y座標を2ずつカウントさせ、画面をその位置へ移動させます。下までいったら、また0に戻して、繰り返しです。
myY = myY + 2;

サンプルでは、最終行を300としています。
if ( myY == 300 ) myY = 0;

ループは、setTimeout で 100ミリ秒単位で動かしています。
setTimeout( "myScroll()", 100 );
※ setTimeout は、Step.28 参照


● 古臭い注意事項
IEは、<BODY>タグで、bgproperties="fixed" と指定してあげれば、壁紙は固定されてスクロールしませんが、NNはスクロールしてしまいます。
また、勝手にスクロールするので、下の表示のスクロールバーはいらないと、<FRAME>タグに SCROLLING="no" と入れたいところですが、NNが動かなくなります。

Q&A


[Q] スクロールしないのですが。
[A] 画面内に収まる行数(スクロールバーが出ない)では、スクロールしません。<br> を追加するなりして下さい。


【Q&A】

[Q] 下まで行ったらスクロールをやめたいのですが。
[A] サンプルを下のように変更して下さい。

function myScroll(){
     window.scroll( 0 , myY );
     myY = myY + 2;
     if ( myY < 300 ) setTimeout( "myScroll()", 100 ); // 下まで行ってなければループ
}


 
イヌでもわかるJavaScript講座 お品書き へ戻ります