-
ID:aWZQDI さんの質問

インラインフレーム内のスムーズスクロールをしようと思っていて
下記のようなjavascriptを使用したのですが
スクロール自体はされるものの動きが遅いのが気になっています

速度を調整するにはどうしたらいいと思いますか?

var $scrollX = 0;
function iframeController( $x ) {
var $sampleIFrame = document.getElementById( "sampleIFrame" );
if ( $scrollX < $x ){
disabledButtons( true );
var $intervalID = setInterval(
function(){
scrollX( ++$scrollX );
},
1
);
} else if ( $scrollX > $x ) {
disabledButtons( true );
var $intervalID = setInterval(
function(){
scrollX( --$scrollX );
},
1
);
}
function scrollX( $scrollX ) {
$sampleIFrame.contentWindow.scrollTo( $scrollX, 0 );
if( $scrollX == $x ){
clearInterval( $intervalID );
disabledButtons( false );
}
}
}

function disabledButtons( $disabled ) {
$buttons = document.getElementById( "iframeController" ).getElementsByTagName( "button" );
for( var $i = 0; $i < $buttons.length; $i++ ) {
$buttons[$i].disabled = $disabled; }
}

みんなの回答 5 件

ID:6JK2cs さんの回答

jQueryを使え

ID:aWZQDI

何のjQueryを使えばいいですかね?

ID:ObHgSh さんの回答

setIntervalで1msの設定がブラウザ自体の処理を重くしてるんじゃない?

ID:NwZ25A さんの回答

速いとか遅いというのは主観の問題なんです。つまり相対的なもの。今の貴方には遅く見えている。貴方が変わることで世の中が変わるんです。つまりもっと落ち着いてゆっくり、ゆったり生きることを心がけるのです。その結果、スクロールは「あれぇ、なんだか、すこし、速くなった、かなぁ?…うれしい、ナ」と高速化します。スクロールが速くなる薬物を使ってみるのもよいかもしれません。
それ以外の方法としては、まともに JavaScript を勉強しろっての。

ID:wBfKWo さんの回答

1ミリ秒に1pxで遅いのなら、1ミリ秒で1px,2px...と動くようにすればよいだけのこと。

ID:cmqPkS さんの回答

setIntervalの実行間隔の最小時間はCPUの速度とOSの割り込みで簡単に変わる
毎時間同じタイミングで処理が発行されるとは思うなよ
カクカクの元になるどころか、コードが大規模になるとバグの元になる
だから時間ごとにここまで動かすっていうframe per secondsの感覚で動かすべし

最終更新日:2015-03-09 (3,151 views)

関連するトピックス

ページ上部に戻る