• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JSで自動スクロールを行う方法。)

JSで自動スクロールを行う方法とアニメーションの付加方法

このQ&Aのポイント
  • JSで自動スクロールを行う方法について質問があります。特にアニメーションを付加したい場合の方法について教えてください。
  • 例えば、ゆっくりスクロールさせるにはどのようにすれば良いでしょうか。animate関数を使用して実現したいです。
  • 現在のコードでは自動スクロールは実現できていますが、アニメーションが上手く動作しません。どのように修正すれば良いでしょうか。

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

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

>animate以外でもお待ちしております。 自作すればいいんでないの? 例えば、こんな感じ(全角空白は半角に) function sample(dest){  var duration = 500;  var obj = document.documentElement || document.body;  var pos = obj.scrollTop;  var flag = dest > pos, step = (dest - pos) * 30 / duration;  var animate = setInterval(function(){   pos += step;   if((flag && pos>=dest)||(!flag && dest>=pos)) pos = dest;   obj.scrollTop = pos;   if(pos === dest) clearInterval(animate);  }, 30); }

DogFor
質問者

お礼

このようなコードをすっと書けるの凄いですね。 憧れます。 2回もアイディアをいただき、ありがとうございます! 感謝。

その他の回答 (1)

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

コードを追いかけてはいませんが、$(winow)でanimateを行なおうとすると『ownerDocumentが未定義である』といったようなエラーがでるようです。 これからの推測ですが、DOMエレメントでないとanimateは使えないのかも知れません。 とりあえずの思いつきですが… $("#wall").click(function(){ var div = $("<div>").css("height", 0); var target = $("#wall_2").offset().top; div.animate( { height: 1 }, { step: function(d){ $(window).scrollTop(target * d);} } ); }); とか。

DogFor
質問者

お礼

fujillinさん、さっそく回答ありがとうございます! なるほど、stepを使う事によってこうゆう事が出来るんですね。 更にここに、duration を加えると更に秒数の設定も出来ますね。 $("#wall").click(function(){  var div = $("<div>").css("height", 0);  var target = $("#wall_2").offset().top;  div.animate(  { height: 1 },  { duration: 5000, step: function(d){ $(window).scrollTop(target * d);} }  ); }); 他に、方法がないかも回答をお待ちしております! animate以外でもお待ちしております。

関連するQ&A