みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

スクロールしても画像・文字がついてくる

教えて!goo内にて、スクロールしても画像もしくは、文字がついてくるJavascriptのコードが下記のようにありました。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<script type="text/javascript">
function F1() {
v='.pixelTop=';dS='';sD='.style';y='document.body.scrollTop';}
function F2() {
obj='obj1';yy=eval(y);eval(dS+obj+sD+v+yy);setTimeout('F2()',10);}
</script>
</head>
<body onload="F1();F2();">
<div
id='obj1'
style='position:absolute;left:0px; top:0px;'>
ここが動きます。
</div>
<script type="text/javascript">
for(var i=0;i<100;i++){document.write('<br>')}
</script>
</body>
</html>

そこで質問なのですが、DOCTYPEを下記のように変更すると動作しなくなったのですが、この原因が調べてもわかりませんでしたので、どなたか原因がわかる方教えていただけませんでしょうか? 使用ブラウザは、IE6 です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

投稿日時 - 2008-03-12 21:32:39

QNo.3857266

困ってます

質問者が選んだベストアンサー

<script type="text/javascript">
window.onscroll = function(){
document.getElementById('obj1').style.top = (document.body.scrollTop ||document.documentElement.scrollTop) + 200 + 'px';
}
</script>

で、位置に固定させる事ができます。数字200の部分をobj1のtopと同じにする事で変更可能です。

投稿日時 - 2008-03-12 23:33:54

お礼

ありがとう御座います。
解決致しました。

大変勉強になりました。

投稿日時 - 2008-03-12 23:44:09

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

DOCTYPEで動かなくなるのはScrollTopのとり方の問題です。

document.body.scrollTop
document.documentElement.scrollTop
の2つを用意して、どちらか取れるほうにしておけばよいので、書き換えようと思いましたが、

そのスクリプトではFirefoxでは動かないので

BODYタグの onloadとそのスクリプトを削除して

<script type="text/javascript">
window.onscroll = function(){
document.getElementById('obj1').style.top = (document.body.scrollTop ||document.documentElement.scrollTop) +'px';
}
</script>

でDOCTYPEやブラウザに関係なく動くと思いますが、どうでしょう?

投稿日時 - 2008-03-12 22:01:46

補足

ありがとうございます。 
勉強になりました。 
もう一つ教えていただけますでしょうか?

下記の通り、style='position:absolute;top:200px; right:100px; ' を追加し画面の中ほどに画像をおいて、そこから画像をスクロールさせようと思うのですが、スクロールをすると、画像が上部に移動してしまいます。
中央部に固定された状態で下部へ画像がスクロールすることはできますでしょうか?
よろしくお願いします。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
</head>

<body>
<div id='obj1' style='position:absolute;top:200px; right:100px; '>
<img src="a.gif">
</div>

<script type="text/javascript">
for(var i=0;i<100;i++){document.write('<br>')}
</script>


</body>
</html>


<script type="text/javascript">
window.onscroll = function(){
document.getElementById('obj1').style.top = (document.body.scrollTop ||document.documentElement.scrollTop) +'px';
}
</script>

投稿日時 - 2008-03-12 23:04:49

あなたにオススメの質問