jQueryにはスクロールすることでイベントが発火するscroll()イベントがあります。
scroll()イベントが扱えるようになると、スクロール量を取得したりスクロールした量に応じてイベントを発火させることができます。
様々なイベントを学ぶことで制作の幅が広がるので、知識として身に付けていきましょう!
この記事では「jQueryのscrollイベントの使い方」について解説します。
- jQueryのscrollイベントの使い方
JavaScriptが難しくて挫折しそうなあなたへJavaScriptは独学で進めると難しい内容も多いですよね。相談相手がいないと煮詰まってしまうこともあるかと思います。
もし学習の進め方について悩まれているならば、ZeroPlusの無料相談会への参加をお勧めします。
ZeroPlusはWeb制作のフリーランス育成に特化したプログラミングスクールです。超フレンドリーなメンターがあなたの疑問や悩みについて、なんでもお答えします。
\お申し込みは30秒で終わります。/
学習方法の悩み、私たちと一緒に解消しましょう!
scrol()イベントの使い方
jQueryのscrollイベントは、jQueryのイベントの一つ。scroll()はスクロール中にイベントを発火させることができます。
基本書式出
$("要素").scroll(function(){
// スクロールしたときの処理内容を記述する
});上の書式にコードを当てはめると次のようになります。
<div class="scroll-area">
<div class="box"></div>
</div>.scroll-area {
overflow: scroll;
height: 200px;
border: 1px solid black;
width: 50%;
}
.box {
width: 200px;
height: 200px;
background: orange;
margin: 20px;
}$('.scroll-area').scroll(function () {
console.log("scroll!");
});出力結果
テキストエリア内を縦にスクロールすると、コンソール画面でメッセージが表示されます。なお、横スクロールしてもメッセージが表示されます。
scrollTop:縦スクロールの位置を取得するメソッド
縦スクロールの位置を取得するには、scrollTop()メソッドを使います。例えば、縦スクロールの位置を取得する場合は次のようになります。
<p class="scroll-text">スクロール:<span></span></p>
<div class="scroll-area">
<div class="box"></div>
</div>.scroll-area {
overflow: scroll;
height: 200px;
border: 1px solid black;
width: 50%;
}
.box {
width: 200px;
height: 200px;
background: orange;
margin: 20px;
}$('.scroll-area').scroll(function () {
const el = $(this).scrollTop();
$('.scroll-text').text("縦スクロール:" + el + "px");
});出力結果
テキストエリアを縦スクロールすると、scrollTop();で位置を取得、変数に格納します。
.scroll-textクラスがついたpタグに、textメソッドで位置が出力されます。
scrollTop()を適用しているので、こちらの場合横スクロールをしても位置は取得できません。
scrollTop:横スクロールの位置を取得するメソッド
横スクロールの位置を取得するには、scrollLeft()メソッドを使います。例えば、横スクロールの位置を取得する場合は次のようになります。
<p class="scroll-text"></p>
<div class="scroll-area">
<div class="box"></div>
</div>.scroll-area {
overflow: scroll;
height: 200px;
border: 1px solid black;
width: 50%;
}
.box {
width: 200px;
height: 200px;
background: orange;
margin: 20px;
}$('.scroll-area').scroll(function () {
const el = $(this).scrollLeft();
$('.scroll-text').text("横スクロール:" + el + "px");
});出力結果
テキストエリアを横スクロールすると、scrollLeft();で位置を取得、変数に格納します。.scroll-textクラスがついたpタグに、textメソッドで位置が出力されます。
scrollLeft()を適用しているので、こちらの場合縦スクロールをしても位置は取得できません。
スクロールしたら背景色が変わる
scroll()イベントを使って、スクロールした量によってイベントを発火させることができます。例えば次のようなコードは、100px以上スクロールしたら背景色が変わる処理を設定しています。
スクロールで背景色が変わるサンプルコード
<header class="header"></header>
<div class="contents"></div>.header {
width: 100%;
height: 100px;
background: orange;
position: fixed;
top: 0;
left: 0;
}
.header.change-color {
background: red;
}
.contents {
width: 100%;
height: 2000px;
}$(function () {
const header = $('.header');
$(window).scroll(function () {
if ($(this).scrollTop() >= 100) {
header.addClass('change-color');
} else {
header.removeClass('change-color');
}
});
});出力結果
See the Pen scroll-top by ZeroPlus (@zeroplus-programming) on CodePen.
headerクラスを変数に格納します。
$(window)で画面全体がスクロールしたらイベントが発火するようにします。
$(this)はここでは$(window)を指しています。
画面全体で100px以上スクロールしたら、headerに.change-colorクラスを付与、そうでなければchange-colorクラスを外すという処理です。
まとめ
jQueryのscroll()イベントは、スクロール中にイベントを発火させることができます。スクロール量に応じてイベントを設定することができるので、Web制作で活用していきましょう!
jQueryのscroll()イベントまとめ
scroll():スクロール中にイベント発火scrollTop():縦スクロールでイベント発火scrollLeft():横スクロールでイベント発火
![]()
一つ、確かな理解を積み上げましたね。
ただ「理解した」と「実務で使える」の間には、もう一段ギャップがあります。なんとなく作れても、実務基準ではコードにムダや間違いがあるとみなされることがあります。自分では気づけない、そのズレをどう埋めるかが次の課題です。
そのギャップを埋める一番早い方法は、実際の案件レベルの制作を、メンターに見てもらいながら進めることです。
ZeroPlus Gateでは、30日間無料で、正しくWebサイトを作る力が身につく実践型の学習環境を提供しています。
- メンターとあなただけの学習ロードマップを作れる
- 現場経験豊富なプロへ回数無制限で質問ができる
- 元ランサーズの技術責任者監修のカリキュラム
このレベルの環境を、入会金も月謝も一切なしで提供しているのはZeroPlus Gateだけです。ただし、参加者の数には制限があります。
少しでも興味がある方は、以下のリンクからサービスの詳細をご覧ください。
登録は30秒、今すぐ次の一歩へ