【jQuery】aタグをクリックするとページ内スクロールする方法
今回はjQueryを使って、「aタグをクリックするとページ内スクロールする方法」について解説していきます。
コピペできるので、是非真似して実装してみてください!
目次
aタグをクリックするとページ内スクロールする方法
完成形はこちらです。
See the Pen
Untitled by webis (@webis-co)
on CodePen.
headerにあるセクション1・セクション2・セクション3のナビメニューをクリックしてみてください。
クリックすると、指定のセクションまで自動でスクロールするでしょう。
今回は上記のように、ナビメニューのaタグをクリックすると自動でページ内スクロールするようにコーディングしていきます!
準備
まずはjQueryのコードをbodyタグの閉じタグの上に書きましょう。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
こちらを書くことで、jQueryを使うことができます。
HTML
<!-- header -->
<header class="header">
<div class="header__nav">
<ul>
<li>
<a href="#sec1">セクション1</a>
</li>
<li>
<a href="#sec2">セクション2</a>
</li>
<li>
<a href="#sec3">セクション3</a>
</li>
</ul>
</div>
</header>
<!-- box -->
<section class="box" id="sec1">
<h2>セクション1</h2>
</section>
<section class="box" id="sec2">
<h2>セクション2</h2>
</section>
<section class="box" id="sec3">
<h2>セクション3</h2>
</section>
まずはheaderを作成していきます。
ページ内スクロールを作る上でのポイントは、まずクリックしてページ内スクロールさせたいaタグに対して「#」をつけた値を、aタグの中にあるhref属性に記述します。
今回は「#sec1・#sec2 ・#sec」をaタグに指定しました。
そしてスクロールして移動させたい部分に「id=””」を指定します。
以下のように名前を揃えておきましょう。
「#sec1」→「id=”sec1″」
「#sec2」→「id=”sec2″」
「#sec3」→「id=”sec3″」
名前を揃えないと、ページ内スクロールしないので注意してください!
CSS
/* header */
.header {
max-width: 1000px;
margin: 0 auto;
padding: 30px 0;
display: flex;
align-items: center;
justify-content: space-between;
}
.header__nav ul {
display: flex;
}
.header__nav ul li:not(:first-child) {
margin-left: 50px;
}
.header__nav ul li a {
text-decoration: none;
color: black;
}
.header__nav ul li a:hover {
opacity: 0.7;
}
/* box */
.box {
height: 100vh;
text-align: center;
}
#sec1 {
background-color: burlywood;
}
#sec2 {
background-color: chocolate;
}
#sec3 {
background-color: crimson;
}
JavaScript
// scroll
$(function () {
$('a[href^="#"]').click(function () {
var speed = 1000;
var href = $(this).attr("href");
var target = $(href == "#" || href == "" ? 'html' : href);
var position = target.offset().top;
$("html, body").animate({ scrollTop: position }, speed, "swing");
return false;
});
});
「#」が指定されているaタグをクリックすると、1秒の速度でページ内スクロールするようにしました。
「var speed = 1000;」の数字の部分はスクロールのスピードなので、自由に変えてみてください。
まとめ
以上が、jQueryを使って、「aタグをクリックするとページ内スクロールする方法」でした。
WEBサイトで頻繁に使われる実装なので、是非挑戦してみてください。




