これはうまくいきましたが、突然停止しましたが、何が変更されたのか分かりません。jQuery - setInterval()関数は、遅いです。
概要:我々はいくつかのhtmlを持っている...
<div id="side">
<ul id="photos">
<li><img... </li>
<li><img... </li>
<li><img... </li>
...
</ul>
</div>
は含ま<div>
とposition;absolute
のそれよりも大きい高さを持つ<ul>
があり、その中に、一定の高さ、position:fixed
とoverflow:hidden
のdiv要素があります。ユーザーが#side
の底に向かって移動すると、#photos
がスクロールアップするという考えがあります。私はそれがより速く〜5pxをスクロールするように設定して、エッジに向かってゆっくり〜1pxを中央に向かってスクロールします。
問題は、ゆっくりと動きます。 1ピクセル上に移動してから別のピクセルを待って上に移動するようにします。私は間隔を10に設定しました。これはかなり速くなければなりませんでした。以前はかなりうまく動いていました。
ここにスクリプトがあります。relivant関数は、最後にsetInterval()
であり、残りは、場合によっては提供されています。あなたの代わりに、ブールtrue
の文字列を渡しているので
var move_up, move_dn,
hoverInterval,
yPos, //y position on slider
objHeight, //Height of slider
posPercent; //y axis percent on the slider
function movable(){
container = $("#side");
slider = $("#photos");
position = slider.position().top;
limit = 0 - slider.height() + container.height()
if(position >= 0)
{return('top');}
else if(position <= limit)
{return('bottom');}
}
function scroll_div(a){ //a=amount to move
$("#photos").animate({"top":"-="+a+"px"},"slow","easeOutExpo").stop("true","true");
}
function move_div(){
place = movable();
move = (Math.pow(((100*yPos)/objHeight)-50,3)/20000);
if (move < 0){
if (place != 'top'){
scroll_div(move)
}
}else{
if (place != 'bottom'){
scroll_div(move)
}
};
}
$("#side").mousemove(function(e){
objHeight = this.offsetHeight
yPos = e.pageY - this.offsetTop;
//offset = parseFloat($("#photos").css("top")) superfluous
});
$("#side").hover(
function(){hoverInterval = setInterval(move_div,10)},
function(){clearInterval(hoverInterval)
});
setIntervalは10msに設定されていますが、600msの「slow」に設定された 'scroll_div()'アニメーションがトリガされ、呼び出すたびにアニメーションが停止します。これは私には意味をなさない。あなたの特定の目的のために、アニメーションを完了して実行する必要があります。アニメーションが完了したときに別のアニメーションを開始したい場合は、開始することができますが、開始することをやめ、停止させてから、もう1つを開始します。これは非常に非効率的で、滑らかなアニメーションを提供しません。 – jfriend00
さて、私はそれを修正しましたが、これまでのように滑らかではないようです。私がしたのは、div#photosをul#photosに変更したことだけでした。 – DavidR
下記の私の答えを参照してください。あなたは何を修正しましたか?私は、現在のコードがどのようなものか分からなければ、さらに助けにならない。 '#photos'だけ使うことができます。 'div#photos'や' ul#photos'の必要はありません。 – jfriend00