AMANOJAKU.NET
[ NN3+, IE4+, Mozilla, Opera ]

横スクロール

実は以前、ZDNet Japan エンタープライズ / Tips for HTMLというところに元ネタがありましたが、今はありません。モノ自体は面白いものだったこともあって、著者さんの許可を得てここに掲載していました。今はもっぱらアーカイブの意味で残しています。

ソースは多少自分が手を加えたところもありますが、ページを動かすアルゴリズムはそのまんまだったりします。^^; 基本的なメソッドしか使っていないため、汎用性が高いのが特徴。JavaScriptに対応したブラウザであればほとんど動作するハズです。

ただ、レイアウトを含め「どのように見せるか」が問題かもしれません。ウィンドウの横幅は固定したくなるので、別窓を開いたり、幅を固定したフレームに読み込むことになるでしょう。その際、ブラウザによって微妙に調整具合が異なるので注意が必要です。スクロールバーの表示/非表示なども慎重に。

【 実行例 】

サンプル ※別窓が開きます

サンプルソース

下のソースをHEADブロック内にコピー&ペーストし、slidePageTo() / slidePageBy() を使って呼び出します。slidePageTo() は絶対移動、slidePageBy()は相対移動になります。

とまあ、こんな感じ。テキトウな説明ですみません。^^;

<script type="text/javascript">
<!--
var moveID = false;
var pos = 0;

function slideMe_left(n) {
  pos += Math.ceil((n-pos)*0.07);
  self.scroll(pos,0);
  if ((n-pos) <= 1) {
    pos = n;
    self.scroll(n,0);
    clearTimeout(moveID);
    moveID = false;
    return;
  }
  moveID = setTimeout("slideMe_left(" + n + ")",0);
}

function slideMe_right(n) {
  pos -= Math.ceil((pos-n)*0.07);
  self.scroll(pos,0);
  if (Math.abs(n-pos) <= 1) {
    pos = n;
    self.scroll(n,0);
    clearTimeout(moveID);
    moveID = false;
    return;
  }
  moveID = setTimeout("slideMe_right(" + n + ")",0);
}

function slidePageTo(n) {
  if(!moveID) {
    var d = (n>pos)? "left" : "right";
    var f ="slideMe_"+ d +"(" + n + ")";
    moveID = setTimeout(f,0);
  }
}

function slidePageBy(n) {
  if(!moveID) {
    var d = (n>0)? "left" : "right";
    var f ="slideMe_"+ d +"(" + (pos+n) + ")";
    moveID = setTimeout(f,0);
  }
}
//-->
</script>
もどる