動的に切り替わる指定座標へ、スムーススクロール

このQ&Aのポイント
  • 指定座標へウインドウをスムーススクロールする方法について教えてください。
  • Y座標を動的に取得して、その位置にウインドウをスムーススクロールさせる方法を知りたいです。
  • ページ内の特定の位置へスムーススクロールする方法を教えてください。
回答を見る
  • ベストアンサー

動的に切り替わる指定座標へ、スムーススクロール

window.scrollTo("0",Y);で、 ウインドウを指定位置に移動させているのですが、 これをスムーススクロール対応するには、 どうすればよいでしょうか? Yは、指定座標(モニタ上の絶対位置)で、 任意のタイミングで、動的に取得してます。 イメージとしては、 関数みたいなのに、Y座標を渡して、 その都度、スムーススクロールさせるような使い方を想定してます。 jQueryとか、プラグインを使ってもいいですが、 なるべくシンプルに行きたいと思ってます。 また、結果的に、ページ内リンクも、スムーススクロールすることになったとしても別に構いませんが、 やりたいのは、リンクをスムーススクロールすることではなくて、 「動的に、都度切り替わる、Y座標へ、スムーススクロールしたい」ってことです。 難しいようであれば、 厳密なスムーススクロールじゃなくても、 何となくそれっぽく見えれば構いません。

  • re999
  • お礼率61% (476/777)

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>これをスムーススクロール対応するには、 >どうすればよいでしょうか? いきなり目的のY座標の位置を表示するのでなく、アニメーション的に順次Y座標に近づくように表示してあげればよろしいかと。 簡単な原理のサンプル。 (速度を変えたり、イージングをつけるなどはご自分でどうぞ) function smoothScroll(y){ //現在のy座標を取得 var top = (document.compatMode=='CSS1Compat'?document.documentElement:document.body).scrollTop; var step = Math.max(1, (Math.abs(y - top)/30 | 0)); step *= y>top?1:-1; //スクロール処理 var id = setInterval(function(){ top += step; if((step>0 && top>y) || (0>step && y>top)) top = y; window.scrollTo(0, top); if(y==top) clearInterval(id); }, 30); }

re999
質問者

お礼

「回答」&「コード作成」ありがとうございました。 勉強になりましたー

関連するQ&A

  • 画面を開いたときに指定位置まで自動的にスクロールする方法

    お世話になります。 掲題がなにを指しているかと申しますと、 HTML(サーブレット)からリンクが開かれたときに指定位置までスクロールした状態で開かせてやりたいのです。 Wikipediaのような目次をクリックすると自動的にその題目までスクロールするイメージです。 JavaScriptにて、window.ScrollTo(座標)という方法は見つけましたが、Wikipediaもこの方法をとっているのでしょうか? ほぼズレがないのでなんとなくこの方法以外にもあるのかなと思ったのですが、、、Wikipediaソースをみると、<a href= のあとに#.E…というリンクが張ってあります。これがキーなのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • HTML
  • スクロール位置を中央にしたい

    こんにちは。質問させてください。 クリックした位置に画面がスクロールするものを作っています。 今の状態だとクリックした位置にスクロールするのですが ストップする位置が画面の左上で止まります。 これを画面の中央で止まるようにしたいのです。 ヒントをいただけませんでしょうか。宜しくお願い致します。 // 現在のスクロール量を取得 function getScroll(){ var x, y; if(document.all !== void 0){ // IE4, IE5, IE6 x = document.body.scrollLeft; y = document.body.scrollTop; }else if(document.layers !== void 0 || (navigator.userAgent.indexOf("Opera") != -1 || window.opera !== void 0)){ // NN4, Opera6 x = window.pageXOffset; y = window.pageYOffset; }else if(navigator.userAgent.indexOf("Gecko") != -1){ // NS6, Mozilla x = window.scrollX; y = window.scrollY; }else{ x = y = 0; } return {x: x, y: y}; } // スクロール始めのスクロール量 var SCROLL ; var divCountScroller = 50 ; // 分割数 // 現在のスクロール位置から、指定座標までスクロールします function scroller( x, y, count ){ if( count === void 0 ){ count = 0 ; SCROLL = getScroll(); } if( count++ < divCountScroller ){ var c = count/divCountScroller ; var nx = SCROLL.x+( x-SCROLL.x )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); var ny = SCROLL.y+( y-SCROLL.y )*( c+1/Math.PI*Math.sin( Math.PI*c ) ); window.scrollTo( nx, ny ); setTimeout( "scroller("+x+","+y+","+count+");", 30 ); } }

  • 表示時にdiv要素のスクロール位置を指定したい

    上部にヘッダー、左にメニュー、右にコンテンツ、下部にフッターという、2カラムのHTMLなのですが、左右のdiv要素にoverflowでスクロールをそれぞれ付けています。 問題なのは、この左側のメニューで、サイト内リンクをクリックすると新しくリンク先ページが開くので、当然スクロール値は0になります。 後方のボタンの場合、どのボタンを押したのかわからなくなってしまいます。 ということで、javascriptでスクロールの位置を調整したいのです。 私は初心者でして、見よう見まねで下記のように書いてみたのですが、スクロール値は0のままです。 根本的に間違っているのかすら解らずで、ご教授願いたいと思い投稿させて頂きました。 宜しくお願いいたします。 window.onload = function(){ sub_scroll.scrollTo('se'); } ※sub_scrollは左のdiv要素のidです。 seは先頭にしたい箇所のidです。

  • 別ページの指定した座標へリンクしたい

    こんにちは。 以前 http://oshiete1.goo.ne.jp/kotaeru.php3?q=725989 で現在表示中の指定した座標へリンクする方法で <A href="javaScript:scroll(x,y)">●●</a> を教えて頂きました。 これを応用して別ページの指定した座標へリンク できるようにしたいと思い、 <A href="javaScript:index.asp#scroll(x,y)">●●</a> と指定を変えてみたのですが、うまくいきません。 別ページはaspなのですが、別ページへは座標指定で リンクはできないのでしょうか? どなたかご存知の方は教えて下さい。 よろしくお願いします。

  • 座標の移動指定について教えてください

    初歩的な質問で申し訳ありませんが、 ボタン操作によって上下にスクロールするループ画像が作りたいです 見える範囲(ステージ)が縦幅300pxなのに対し、(ムービー クリップに設定した) 縦幅500pxの画像と、押すたびに画像を 20pxずつ上と下に動かすための ▲(上用)▼(下用)2つの ボタンを配置します。 ボタンを操作して画像を初期の座標(たとえばy.100)から 上下に動かし、ステージの上端か下端で 画像が見切れそうな 位置(たとえばy.200、もしくはy.0)にまでついた時に元の 位置(y.100)まで戻り、 ループしてるようなflashが作りたいのです。 onClipEvent (load) {   this.my_mc._y = 100; } if (my_mc._y < 0) {  my_mc._y = 100; } else if (my_mc._y < 200) {  my_mc._y = 100; } ↑のように指定しても思うように動いてくれず、困っております どなたかお力をかしてください…お願いします flash CS3のactionscript2で作業しています

  • ボックス内の scrollTo(x,y) について質問です。

    ボックス内の scrollTo(x,y) について質問です。 スタイルシートで .text { overflow: auto ; width: 550px; height:400px; } というボックスを作り、その中の本文をスクロールで見られるようにしているのですが、 このボックス内のスクロール位置を上に移動するためにscrollTo(x,y)を設定したいです。 ボックス内に <a href="javascript:scrollTo(top)">トップへ</a> と記述し実行したところ、ボックス内のスクロール位置は戻らず ページ全体のスクロールがトップに移ります。 このscrollTo(x,y)の記述方法について 対象(ボックス内)を正しく指定する方法があれば教えていただきたいです。 素人質問で申し訳ありませんがかよろしくお願いいたします。

  • スクロール位置に関してです

    お世話になります PHP4でHP作成しています Windowのスクロール位置に関して質問させて下さい 親Windowから子Windowを呼び出して 子Windowを閉じるタイミングで 親Windowのリロード処理を行っています そこで、親Windowのスクロール位置がTopに戻ってしまう現象が起きてしまい 困っています リロード処理はJavaScriptを使用して  echo "<script type='text/javascript'>";  echo "window.close();";  echo "window.opener.location.reload();";  echo "</script>"; と書いています 通常F5キーの更新処理を行うと スクロール位置が更新前の位置にセットされるので JavaScriptからの指定も上手く行くのではないかと思ったのですが… 宜しくお願いします

  • JavaScriptで指定Windowを最大表示、表示位置 ( 座標指定 )

    (1) JavaScriptで指定のWindow ( 例 : winOpenで開いた新規Window、子Windowから見たTopなど ) を最大表示する方法を教えてください。 (2) JavaScriptで指定のWindowの位置 ( 座標 ) を指定する方法を教えてください。 (Win32APIのSetWindowPosのようなものをイメージしています) ターゲットのブラウザは、(1)、(2)のどちらもIE5.x / 6.x、NN 4.x です。 手持ちの書籍、Google等で探してみたのですが、発見できませんでした。

  • X,Y座標で位置を指定して印刷できるソフト

    これまで使っていた印刷用のソフトウェアが使用出来なくなってしまい、代替え品を探しております。 [要件] ・X,Y座標でmm単位で位置を指定でき、任意の文字列を印刷できる ・用紙やフォントの指定ができる ・Windows 7で動作する フリーソフトでもシェアウェアでも構いません。探した限りでは見つからず、もしご存じの方がいましたら、お教えいただけますと大変助かります。

  • jQueryでカレンダーを作っているのですが・・・

    現在ホームページを作成していて、 年月が変わったら、自動で位置がスクロールするカレンダーを作りたいと思っています。 そこで、jQueryを使おうと思い、下記のURLを参考に入れようと思ったのですが、 http://qa.itmedia.co.jp/qa2937941.html ここに書いてあるのは、 function next() {window.scrollBy(0,500);} function last() {window.scrollBy(0,-500);} window.onload = function(){ var today = new Date(); window.scrollTo(0,today.getMonth()*0); } というjQueryで、 自動で月のみを取得してスクロールするjQueryでした。 年も反映するにはどう修正したらいいのかがわかりません。 ちなみに、カレンダーは下記のURLで、 http://www.creator-web.co.jp/rigaku/calendar.html iframeで該当カレンダー部分だけ表示するようにいしています。 http://www.creator-web.co.jp/rigaku/index.html アドバイスお願いします!

専門家に質問してみよう