• 締切済み

JavaScriptでのDIV間のスクロール

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座標に移動させるような関数を実装すれば良いと考えています。 ですが、どのような実装をすれば良いか、試行錯誤していますがうまくいきません。 どなたかアドバイスをいただけるととてもうれしいです。

みんなの回答

回答No.2

boxの座標を取得して、element.scrollTopやwindow.scrollTo()でスクロールさせてください。 https://developer.mozilla.org/Ja/DOM/Element.getBoundingClientRect http://msdn.microsoft.com/en-us/library/ms536433.aspx function $(cname, idx){ return document.getElementsByClassName(cname)[idx]; } $('box', 1).onclick=function(){ document.body.scrollTop=$('box',2).getBoundingClientRect().top; } 未検証です。 互換性を考慮していませんが、メジャーなのの最新バージョンなら動くと思います。

yamikurock
質問者

お礼

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

回答No.1

スクロールテクにクックの最初はマイクロソフトのDHTMLから派生しています。 現在は、HTML5で実現可能です。 http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=%22HTML5%22+%26+%22%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%22 http://kachibito.net/web-design/parallax-scroll-inspiration.html http://www.ajike.co.jp/ajiblo/?p=1351 など検索によりリストされるサイトを参考にしましょうお。 ちょっと以前なら、JQueryですね。もう過去の遺物になりつつあります。マイクロソフトでも、JQueryに刺激され、カプセル化されたものを提供始めています。 http://msdn.microsoft.com/en-us/library/windows/apps/br211369.aspx http://msdn.microsoft.com/en-us/library/windows/apps/br229576.aspx http://msdn.microsoft.com/en-us/library/hh243643.aspx "HTML5" & "anime" で検索されるカテゴリーです http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=%22HTML5%22+%26+%22anime%22 http://website.informer.com/terms/Html5_Anime_Websites 元祖 http://search.yahoo.co.jp/search?p=%22DHTML%22+%26+%22anime%22&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt http://ascii.jp/elem/000/000/589/589429/

yamikurock
質問者

お礼

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

関連するQ&A

  • JavaScript 可変スクロールバーについて

    http://manos.malihu.gr/tuts/jquery_custom_scrollbar.html こちらに掲載されているスクロールバーを引用してサイトを作っていますが、 このまま使おうとすると、 <div class="content"></div>内の内容がheight以上であれば、指定位置にスクロールバーが出てきますが、 私が行いたいことは、 <div class="content" id="id1"> ここにコンテンツを書き込む </div> <div class="content" id="id2"> <a name="abc">abc</a> <div id="123"> something_123 </div> <a name="def">def</a> <div id="456"> something_456 </div> </div> id1およびid2はボタンによって表示が切り替わるようにしてあり、 id2内のclassは<a>タブによって表示、非表示が可能です。 この時に、初期状態ではid1を表示させるとしたとき、 id1の内容がheightに指定した高さより小さく、 id2の内容を全て展開させるとheightの値を上回るとすると、 id2を展開させても、スクロールバーが表示されないことで困っています。 どのようにJavascriptのコードを書き換えれば、可変するDivに対応するようになるでしょうか?

  • firefoxで見るとdiv背景画像がスクロールで消えてしまいます

    http://www.geocities.jp/testac2007/ bodyに「top_bg.gif」という背景画像指定をした上で更にdivを重ね、そのdiv内に「side_860.gif」という背景画像を指定しています。 ieだと意図した通りに表示されるのですが、 FirefoxやNetscapeで確認すると、表示されているページより下部のスクロール以下の背景画像が表示されません。 何とか同症状についてネットで検索し試行錯誤してみたのですが、解決に至りませんでしたのでこちらでヘルプさせていただきました。皆さんのお知恵を拝借いただきたいです。 ■■■HTMLの概要■■■ <body> <div id="side_bg"> <div id="outline"> <div id="A01">○○○</div> <div id="A02"> <div class="A02_left">○○○</div> <div class="A02_right">○○○</div> <br class="c-both"> </div> <div id="B01">○○○</div> </div> </div> </body> ■■■CSSの概要■■■ body { margin:0px auto; background-image:url(images/top_bg.gif); } #side_bg { width:860px; height:100%; margin:0 auto; background:#ffffff url(images/side_860.gif); overflow:visible; } #outline { width:830px; margin:0 auto; background-color:#FFFFFF; } .c-both { clear:both;} #A01{ width:830px; margin:15px 0px 4px 0px; overflow: auto; } #A02{ width:830px; margin:0px 0px 4px 0px; overflow: auto; } .A02_left{ width:304px; float:left; } .A02_right{ width:526px; float:right; margin-top:4px; } #B01{ width:730px; margin:20px 50px; }

    • ベストアンサー
    • CSS
  • javascriptでの独自スクロールボタン作成

    IEで通常のスクロールバーは非表示にし、javascriptでjQueryを使用せずに、 上下ボタンおよびスクロールバーを作成することは可能でしょうか? また可能な場合、どのような方法で作成できるかご教授いただきたく思います。 この作成にあたってはhtmlの親子関係やテキストボックスを使用しない場合の ボタン作成を想定しています。

  • スクロールについて

    画面の左右へのスクロールは『marquee』を使えば出来るのですが、 上下へのスクロールというのは出来ないのでしょうか。 仕事ではないので、切羽詰ってはいないのですが、気になったもので・・・ HTMLの関数にあるのでしょうか。 それともJavaScript等を使う事になるのでしょうか。 御存知の方がいれば教えてください。 お願いします。

    • ベストアンサー
    • HTML
  • ネストされたdiv要素の中のa要素をクリック

    ネストされたdiv要素の中にa要素があるのですが、クリック出来ませんでした何かいい方法はありませんか? <div id="j,click"> <div> <section id="sample03"> <a class="button99 picture1 radius box_shadow" href="#" onclick="disp(99);return false;">戻る<a> </section> <div class="button99 lineargrad1"></div> <div class="box-area1-128 picture1-area1"></div> <div class="button99 linargrad2"></div> <div class="button99 shadow"></div> <div> <div> このように作成しました。 jQuery.biggerlinkではクリック出来るようになりましたが、javascriptの関数は呼び出すことは出来ませんでした。

  • divを横に並べる方法

    <div id="aaa">aaaaaaaaaaaaaaaaa</div> <div>iiiiiiiiiiiiiiiiiiii</div> <div>uuuuuuuuuuuuuuuuu</div></td> この状態だとDivが縦に三つ並んでいるのですが、これを横に一列に並ばせたいのです。 使っているソフトはDreamweaver8でCSSを使い作成しています。 各Divタグのボックスの設定で試行錯誤していますが、全く解決しません。アドバイス宜しくお願いします。

    • ベストアンサー
    • CSS
  • jQueryでスクロールボックスを・・・

    添付画像のような縦の自動スライドショーを作ったのですがスクロールボックスのバーがそのままなのが非常に気になります。 そこで自動スライドと共にスクロールバーもそのイメージに合わせて自動スクロールさせたいのですがどうすればいいでしょうか?プラグイン、もしくはJavaScriptの記述例を教えていただけると幸いです。宜しくお願いします。 【一部ソース】 ▼script <script type="text/javascript"> $(document).ready(function(){ $("#featured > ul").tabs({fx:{opacity: "toggle"}}).tabs("rotate", 4000, true); }); </script> ▼html <div id="featured"> <ul class="ui-tabs-nav"> <li class="ui-tabs-nav-item ui-tabs-selected" id="nav-fragment-1"></li> <li class="ui-tabs-nav-item" id="nav-fragment-2"></li> <li class="ui-tabs-nav-item" id="nav-fragment-3"></li> :繰り返し : </ul> <div id="fragment-1" class="ui-tabs-panel" > <img src="img/no.jpg" alt="" width="250" /> <div class="info" > <h2></h2> </div> </div> :繰り返し : </div>

  • min-width?を使って背景にスクロールを出さない

    body内にcssでbox1をおき、そこに固定背景を指定しています。 その中にさらにbox2を置いています。 box1の幅が1000px、box2の幅が600pxだとします。 できれば、横スクロールをbox2の幅以下で出したいのです。 min-widthではIE6等には利きません・・・。 ハック、javascriptもかわまないので、どなたか効率のいいやり方を伝授していただけないでしょうか? よろしくお願いします。 何もない状態のcssを書きます。 ■CSS body{ } .box1{ width: 1000px; height: 500px; margin: 10px auto; background-color:#000; text-align:center; } .box2{ width: 1000px; height: 300px; margin: 100px auto; background-color:#fff; } ■HTML <body> <div class="box1"> <div class="box2"> </div> </div> </body>

  • ブラウザのサイズを変えたら、divのボックスの高さも合わせて

    ブラウザのサイズを変えたら、divのボックスの高さも合わせて 可変できるようにしたいです。 さらに、可変したdivのボックスの高さより内容量が多い場合は ブラウザのスクロールバーのようにCSSのoverflow:autoで スクロールが表示されるようにしたいと考えております。 現時点で、スクロールバーはオリジナルの画像で作成しており、 表示させるのにjScrollPane.jsというJavaScriptを使用しています。 しかし高さが固定されており、カスタマイズしようと思っているのですが なかなかうまくいきません。 どなたか、実現方法をご教授願えますでしょうか。 よろしくお願いいたします。 ※情報不足であれば、追記いたしますのでご指摘お願いいたします。

  • 横にスムーズスクロールしたい

    以前似た質問をしたのですが少し進展があったのでもう一度質問させて下さい。 私はjavascriptにはほとんど詳しくないものです。 複数のリンクを横に並べ、「次へ」のボタンをクリックすると横にスムーズにスクロールするjavascriptを組みたいと思っています。 今考えているのは http://youmos.com/reference/smooth_scroll.html こちらのサイト様の横バージョンを作りたいと思っています。 色々と試行錯誤してみましたが横にスクロールすることがうまくできなかったためどなたかご教授願えないでしょうか… 宜しくお願い致します。

専門家に質問してみよう