jQueryで実装するスクロールについて

jQueryは、Webサイトに動きをつけることのできる言語です。

 

この記事では、Webサイトでよく見る

f:id:khirok:20200130183912p:plain

このような、クリックすると画面TOPに行くボタンをどうやって作ればいいのかについて説明しました。

 

jQueryを読み込む

jQueryのファイルを作成する 

〇〇.jsというファイルを作成します。

今回は、「scroll.js」を作成しました。

htmlファイルのheadタグ内に2つの記述をする

1つ目 (jQueryを使うための準備)

 

2つ目(scroll.jsを読み込むため)

<script src="scroll.js"></script>

 

jQueryが反応するかどうかをチェックする

scroll.jsに以下の記述をします。

 $(function(){

 alert('OK');
 

});

 

その後、ブラウザでhtmlファイルを開き(Macの場合・・・"⌘ + O"で開くことができます)、画面をリロードします。

 

この表示が出てこれば、読み込みに成功しています。

f:id:khirok:20200130200055p:plain

ボタンの見た目を作る 

font-awesomeから上矢印アイコンのタグをコピペする

font-awesomeの使い方はこちらを参照してください。 

khirok.hatenadiary.jp

htmlファイルのheadタグ内には、font-awesomeを読み込むための記述をしています。

<script src="https://kit.fontawesome.com/6cff6feef5.js" crossorigin="anonymous"></script>

 

bodyタグ内には、以下の記述をしました。(コピペしたi要素をscroll-arrowというクラス名のdivタグで囲っています)

<div class="scroll-arrow">
 <i class="fas fa-arrow-up"></i>
</div>

 

ここまでで上矢印がブラウザに表示されました!

f:id:khirok:20200130202737p:plain

CSSを適応させる

ボタンの背景色・高さ・横幅、アイコンの位置・大きさ・色を指定しています。

.scroll-arrow {
background-color: #888;
height: 50px;
width: 50px;
line-height: 50px;
text-align: center;
font-size: 20px;
color: #ddd;
}

 

こんな感じ

f:id:khirok:20200130203728p:plain

さらに、画面の右下にボタンを固定させ、ボタンを円形にし、マウスを当てた時のポインターを指マークに変更します。

.scroll-arrow {
 
 position: fixed;
 right: 30px;
 bottom: 20px;
 border-radius: 50%;
 cursor: pointer;
}

 

こんな感じ

f:id:khirok:20200130203917p:plain

あとで最上部にボタンを押したらスクロールされることを確認するため、main要素を作り以下のCSSを適応させます。

main {
height: 1500px;
background-color: #f3ffff;
}

最上部は、こんな感じ

f:id:khirok:20200130204252p:plain

最下部は、こんな感じ

f:id:khirok:20200130204340p:plain

ボタンを押した時の処理を書く

scroll.js

$(function(){
$('.scroll-arrow').on("click", function(){
$('html').animate({scrollTop: 0});
});
});

 

ボタンをクリックした時に画面全体が最上部に移動するという意味です。

 

完成gif動画

https://gyazo.com/2dcdbc82ac8b0337a0d17ed36d9b2df1

 

目次に適応させる場合

「scrollTop: 0」の数値を変化させれば、好きな画面の位置に移動できるので、目次に応用することも可能です。

 

例えば、この画像では、「scrollTop: 0」の位置にいますが、

f:id:khirok:20200130205111p:plain

左の目次のjQueryをクリックすると「scrollTop: 2500」の位置へと飛びます。

f:id:khirok:20200130205225p:plain

これは、iQueryに付与されたidであるskill-3に対して以下のような、クリックイベントを指定しているためです。

 
$('#skill-3').on("click", function(){
 $('html').animate({scrollTop: 2500})
});

 

以上です。