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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

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

Q&A

解決済

4回答

451閲覧

ページ内スクロールを実装したい。(jQueryプラグイン上で動作させたい)

yafoo

総合スコア18

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

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

0グッド

0クリップ

投稿2018/01/22 07:44

編集2018/01/22 09:08

###前提・実現したいこと
Japan Mapのプラグインを用いて、ページ内スムーズスクロール(するするっと動くやつ)を実装したいと考えております。

###試したこと&概要
Japan Mapのプラグインとしては、現在以下の通り設定し、「ページ内に設定したリンクに移動」自体はできるようになっております。
(すなわち、該当の箇所をクリックすると、指定したidに移動するようになっている。)

$(function() { var areaLinks = { 1: "#sec1", 2: "#sec2", 3: "#sec3", 4: "#sec4", 5: "#sec5", 6: "#sec6", 7: "#sec7", }; var areas = [{ code: 1, name: "北海道", color: "#ca93ea", hoverColor: "#e0b1fb", prefectures: [1] }, { code: 2, name: "東北", color: "#a7a5ea", hoverColor: "#d6d4fd", prefectures: [2, 3, 4, 5, 6, 7] }, { code: 3, name: "関東", color: "#84b0f6", hoverColor: "#c1d8fd", prefectures: [8, 9, 10, 11, 12, 13, 14] }, { code: 4, name: "中部", color: "#52d49c", hoverColor: "#93ecc5", prefectures: [15, 16, 17, 18, 19, 20, 21, 22, 23, 24] }, { code: 5, name: "近畿", color: "#f2db7b", hoverColor: "#f6e8ac", prefectures: [25, 26, 27, 28, 29, 30] }, { code: 6, name: "中国・四国", color: "#f9ca6c", hoverColor: "#ffe5b0", prefectures: [31, 32, 33, 34, 35, 36, 37, 38, 39] }, { code: 7, name: "九州・沖縄", color: "#f7a6a6", hoverColor: "#ffcece", prefectures: [40, 41, 42, 43, 44, 45, 46, 47] }, ];

また、ページ内スクロールについては、サイトを参考にし以下を記述しております。

$(function(){ $('a[href^=#]').click(function(){ var speed = 500; 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; }); });

これで動かなかったのですが、以上のコードはjQueryプラグインを前提にしたものではないので、動かないのも当然といえば当然かな・・・という気はしております。

個人的には

'a[href^=#]'

の部分を適切な形にすれば動くんじゃないかと考えているのですが、どなたか解決策ご存知でしたらご教示頂けると助かります。

何卒、よろしくお願いいたします。

###サンプルページ
恐らく上記で分かりにくかったかもしれず、取り急ぎサンプルページを作成しましたのでご覧ください。

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

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

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

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

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

karamarimo

2018/01/22 08:32

「該当の箇所をクリックすると、指定したidに移動するようになっている。」の該当のコード、また Japan Map を使用している部分のコードも載せてください。
yafoo

2018/01/22 09:11

ご指摘ありがとうございます。経験不足のせいかなかなか文字で説明しにくいので、取り急ぎサンプルページを作成しました。どうでしょうか・・・??
yafoo

2018/01/22 09:12

あと、サンプルなんで北海道・東北・関東しか作っていないですけどネ。
guest

回答4

0

ベストアンサー

js

1 $(function(){ 2 $('a[href^=#]').click(function(){ 3 var speed = 500; 4 var href= $(this).attr("href"); 5 var target = $(href == "#" || href == "" ? 'html' : href); 6 var position = target.offset().top; 7 $("html, body").animate({scrollTop:position}, speed, "swing"); 8 return false; 9 }); 10});

これは「aタグをクリックしたときにスクロールする」だけです。これとは無関係に、エリアをクリックしたときの動作は、提示していただいたサンプルページでは下のonSelectで実装されています。

js

1 $("#map-container").japanMap({ 2 areas: areas, 3 selection: "area", 4 ... , 5 onSelect: function(data) { 6 location.href = areaLinks[data.area.code]; 7 } 8 });

このonSelectで最初のスクロールの処理を書けばいいのではないでしょうか。

追記

DEMO(JSFiddle)

スクロール後にwindow.location.hash = hash;でurlを変えています。

投稿2018/01/22 09:53

編集2018/01/25 02:39
karamarimo

総合スコア2551

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

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

yafoo

2018/01/25 01:54

すみません、恐らくこれが解決策だと思い何回かコードを書いてみたのですが、「全く状況が変化しない」「逆にクリックしても何も反応しなくなった」の繰り返しで上手くいかない状況です・・・。 (当方、HTMLとCSSはある程度分かるのですが、jQueryは全くのど素人状態です・・・) 申し訳ありませんが、具体的にコードを提示頂くことは可能でしょうか? 自分ももう少しjQuery勉強しようと思っています・・・。
karamarimo

2018/01/25 02:41

demoを追加しました。
yafoo

2018/01/25 03:51

ありがとうございます、無事解決しました。
guest

0

karamarimoさんの回答で解決だと思いますが、小ネタ。

CSS

1html { 2 scroll-behavior: smooth; 3}

https://developer.mozilla.org/ja/docs/Web/CSS/scroll-behavior
https://www.w3.org/TR/cssom-view-1/#propdef-scroll-behavior

投稿2018/01/24 04:48

x_x

総合スコア13749

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

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

0

「スムーススクロールスクリプト」のhead内での読込位置が悪いのかも知れません。および「async属性」を追加して見てください。

投稿2018/01/24 04:15

yoshinavi

総合スコア3523

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

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

0

position正しく取れてます?

var href= $(this).attr("href"); var target = $(href == "#" || href == "" ? 'html' : href);

なにかココらへんがおかしい気がするのですが。

html

1<a href="#test">jump!</a> 2~~~~~~~~~~~略~~~~~~~~~~~~~ 3<a name="test" id="test">ここ!</a>

こうだとしてid="test"にジャンプしたいとしたら

javascript

1 $('html, body').animate({ 2 scrollTop: $( $(this).attr('href') ).offset().top 3 }, 500);

こんな感じでいいんじゃないです?

投稿2018/01/22 08:37

sousuke

総合スコア3828

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問