【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集

JavaScriptの初心者です。
JavaScriptの実装方法について教えてください。

以下のようなhtmlがある場合に、JavaScriptの関数呼び出しによってbox間のスクロールをさせたいです。
例:yyyyyyyのboxで関数を呼ぶと、zzzzzzzzzzのboxまでスクロールする。

<div class="box">xxxxxxxxxxxxxxxxxxxxxxx</div>
<div class="box">yyyyyyyyyyyyyyyyyyyyyyy</div>
<div class="box">zzzzzzzzzzzzzzzzzzzzzzzzzz</div>

class名が同一である場合にこのような処理を行うためには、各boxの座標を取得しておき、現在表示しているboxの上下のtop座標に移動させるような関数を実装すれば良いと考えています。
ですが、どのような実装をすれば良いか、試行錯誤していますがうまくいきません。
どなたかアドバイスをいただけるととてもうれしいです。

A 回答 (2件)

boxの座標を取得して、element.scrollTopやwindow.scrollTo()でスクロールさせてください。



https://developer.mozilla.org/Ja/DOM/Element.get …
http://msdn.microsoft.com/en-us/library/ms536433 …


function $(cname, idx){
return document.getElementsByClassName(cname)[idx];
}
$('box', 1).onclick=function(){
document.body.scrollTop=$('box',2).getBoundingClientRect().top;
}


未検証です。
互換性を考慮していませんが、メジャーなのの最新バージョンなら動くと思います。
    • good
    • 0
この回答へのお礼

サンプルコード、ありがとうございます。とても参考になりました。
こちらで動作を確認したところ、うまく動作しました。(Safari)


なお、頂いたコードですと、必ず2番目の該当classへ飛ぶようでしたので、
関数を呼び出す場所から要素インデックスを指定するように修正中です。
・・・まだ動いていませんので、これからデバッグしてみます。

修正中のコード。

function $(cname, idx){
return document.getElementsByClassName(cname)[idx];
}
function moveNext(x){
document.body.scrollTop=$('post_controls',x+1).getBoundingClientRect().top;
}

呼び出しは、テスト用に以下のように呼び出しています。
<a href="javascript:void(0)" onclick="moveNext(※);return false">link</a>
※boxの要素インデックス(1~)

お礼日時:2012/03/16 22:47

スクロールテクにクックの最初はマイクロソフトのDHTMLから派生しています。



現在は、HTML5で実現可能です。

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF …

http://kachibito.net/web-design/parallax-scroll- …

http://www.ajike.co.jp/ajiblo/?p=1351

など検索によりリストされるサイトを参考にしましょうお。

ちょっと以前なら、JQueryですね。もう過去の遺物になりつつあります。マイクロソフトでも、JQueryに刺激され、カプセル化されたものを提供始めています。

http://msdn.microsoft.com/en-us/library/windows/ …
http://msdn.microsoft.com/en-us/library/windows/ …

http://msdn.microsoft.com/en-us/library/hh243643 …

"HTML5" & "anime" で検索されるカテゴリーです

http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF …
http://website.informer.com/terms/Html5_Anime_We …

元祖

http://search.yahoo.co.jp/search?p=%22DHTML%22+% …

http://ascii.jp/elem/000/000/589/589429/
    • good
    • 0
この回答へのお礼

情報、ありがとうございました。
直接知りたい情報ではありませんでしたが、今後の参考とさせて頂きます。

お礼日時:2012/03/16 22:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報