Window インターフェイスの読み取り専用プロパティである scrollY は、文書が垂直スクロールされているピクセル数を返します。現代のブラウザーではこの値がサブピクセル精度ですので、必ずしも整数であるとは限りません。文書が水平スクロールされているピクセル数は、scrollX プロパティで取得できます。

構文

var y = window.scrollY

実際に返される値は、文書が原点から垂直方向にスクロールされた量をピクセル数で表す倍精度浮動小数点数です。正の値は、内容物が上にスクロールされていることを表します。文書がサブピクセル精度のデバイスに表示されている場合は、戻り値も小数部を含むサブピクセル精度の値になります。文書が上にも下にもスクロールされていない場合の scrollY は 0 です。

整数値が必要である場合は、Math.round() を使用して切り捨てできます。

専門用語で説明すると scrollY は、現在の ビューポート の上端の Y 座標を返します。ビューポートがない場合の戻り値は 0 です。

// スクロールしている場合、戻してから次のページへスクロールダウン
if (window.scrollY) {
  window.scroll(0, 0); //文書の左上にスクロール位置をリセット
}

window.scrollByPages(1);

注記

scrollBy()scrollByLines()scrollByPages() のような相対スクロールする関数を使用する際に、文書がすでにスクロールしていないかをチェックするためにこのプロパティを使用してください。

pageYOffset プロパティは、scrollY プロパティのエイリアスです。

window.pageYOffset == window.scrollY; // 常に true

クロスブラウザー互換性のため、window.scrollY ではなく window.pageYOffset を使用します。さらに、古いバージョンの Internet Explorer (IE9 以前) はいずれもサポートしていないため、チェックの上、なければ他の非標準の方法で回避する必要があります。以下に互換性を確保した例を示します。

var supportPageOffset = window.pageXOffset !== undefined;
var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");

var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft;
var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;

仕様

仕様書 策定状況 コメント
CSS Object Model (CSSOM) View Module
window.scrollY の定義
草案  

ブラウザー実装状況

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 手助けしていただける場合は、こちらから!

機能 Chrome Firefox (Gecko) Internet Explorer Microsoft Edge Opera Safari (WebKit)
基本サポート (有) (有) 未サポート (有) (有) (有)
サブピクセル精度 ? 55 (55) 未サポート ? ? ?
機能 Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Android 版 Chrome
基本サポート ? (有) (有) ? ? ? ? (有)
サブピクセル精度 ? (有) 55.0 (55) ? ? ? ? (有)

関連情報

ドキュメントのタグと貢献者

このページの貢献者: locol23, yyss, teoli, khalid32, ethertank, Potappo
最終更新者: locol23,