質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1383閲覧

ボタンを押したら指定のところまでスクロールさせたい

takato.work

総合スコア11

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/03/10 16:18

前提・実現したいこと

ボタンを押したら指定したところまでスクロールしてくれるアニメーションをjQueryで作りたい。
ヘッダーについているボタンでそれぞれスクロールさせたいが、作動しない

発生している問題・エラーメッセージ

ありません

該当のソースコード

HTML

1<header class="fixed-top" id="nav"> 2 <div class="header container"> 3 <div class="row"> 4 <div class="half-air col-md-6"></div> 5 <div class="col-md-6"> 6 <div class="row mr-5 d-flex justify-content-between"> 7 <div class="header-text col-3"><a href="" class="header-lead text-center">About</a></div> 8 <div class="header-text col-3"><a href="" class="header-successor text-center h-sc-1">Service</a></div> 9 <div class="header-text col-3"><a href="" class="header-successor text-center h-sc-2">Portfolio</a></div> 10 <div class="header-text col-3"><a href="" class="header-successor text-center h-sc-3">Contact</a></div> 11 </div> 12 </div> 13 </div> 14 </div> 15</header>

該当のソースコード

jQuery

1$(".header-lead").click(function(){ 2 $(window).scrollTop(300); 3});

試したこと

animateなど動きを滑らかにするところは除き、最も根幹にあるプログラムだけで検証しましたが、動きませんでした。上記のjQueryのプログラムで300進んだところへ画面が飛んでくれると思い組みましたが、元の位置から少しも動きませんでした。

補足情報(FW/ツールのバージョンなど)

HTML5 css3 bootstrap4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

<a>href属性をつけている場合は注意が必要です。jQueryで指定した位置にスクロールをしたとしてもHTMLに記述されたhrefの場所に移動しようとし、結果、hrefに何も記述されていないため一番上に戻ってきてしまいます。このような既定のアクションを取り下げるのには、以下のようにpreventDefault()を記述してください。

javascript

1$('.header-lead').on('click', function (event) { 2 event.preventDefault(); 3 $(window).scrollTop(300); 4});

このままでは汎用性に乏しいのでid属性を使ったスムーズスクロールも紹介しておきます。id属性で内部リンクを張ったうえでご使用ください。

JavaScript

1$('.header-lead').on('click', function (event) { 2 // href属性を取得 3 var href = $(this).attr('href'); 4 // href属性が"#"または空白であったらhtmlを、href属性が設定されていたらhrefをtargetに保存 5 var target = $(href == "#" || href == "" ? 'html' : href); 6 //既定のイベントを取り下げ 7 event.preventDefault(); 8 //href属性のついた要素のtopの座標を取得 9 position = target.offset().top; 10 //その座標まで移動 11 $('html, body').animate({ scrollTop: position }, 300, 'swing'); 12});

また、もしもこれで動かない場合はjQueryのslim版を使っていないかを確認してください。slim版ではanimateを含むajax系の関数は使用できません。

投稿2020/03/10 17:55

soliste16

総合スコア757

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takato.work

2020/03/11 02:11

回答して頂きありがとうございます。こちらを試したところうまく動作しました。また、スムーススクロールの解説まで行っていただきありがとうございます。とても助かりました。
guest

0

こちらで、いかがでしょうか?

jQuery

1$('.header-lead').click(function() { 2 $('html, body').scrollTop(300); 3});

投稿2020/03/10 16:31

編集2020/03/10 16:34
new1ro

総合スコア4528

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takato.work

2020/03/11 02:07

回答していただきありがとうございます。こちらで試してみましたが、soliste16様が仰っているevent.preventDefault();をつけないと動かないようでした。
new1ro

2020/03/11 03:36

なるほど、aタグ使用時に必要なのですね。確かに.. 勉強になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問