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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

jQuery

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

Q&A

0回答

1409閲覧

グノシーのようなタブをクリックorスライドでページをいったりきたりしたい

退会済みユーザー

退会済みユーザー

総合スコア0

スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

タブ

コンテンツの上下左右に参照用のメニューを設けることで、複数の要素やページの表示を可能にするユーザーインターフェイスパターンのこと。メニューをクリックすると、一つの要素が可視化され、他の要素は見えなくなる。

jQuery

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

0グッド

0クリップ

投稿2019/02/02 15:17

グノシーのようなタブをクリックorスライドでページをいったりきたりしたい

タイトルどうりなのですが、タブクリックとスライド機能を使ってページを切り替えたく、また他のページからもタブをクリックでその場所に飛べるようにしたいです。
ちなみにタブはヘッダー的な感じでどのページでも表示はさせておく感じにしています。

やり方としては下記URLのやり方をそっくりそのまま使わせていただいているのですが、
参照:スマートニュースやグノシーのような、スワイプタブ切替機能を実装する
このやり方だと他のページにいる時にタブをクリックしても、そのページのカテゴリーの箇所に遷移できませんでした。(カテゴリーの内容を全て同じHTMLに書いているため)
そのため、<a href="index.html#jamp"></a>のようにアンカーリンクを使って遷移させたのですが、
そのやり方だとそのページに遷移できたとしても、タブをクリックしたりスライドしたりすると、タブの現在の位置とコンテンツのスライドのページがずれてしまいます。。

この記事以外にやり方を書いているところがなかったので、このやり方以外だと方法がわかりません。
どなたかやり方がわかる方がいれば教えていただきたいです。
よろしくお願いいたします。

jquery

1$(document).ready(function(){ 2 3 /****************************************** 4 事前準備 5 *******************************************/ 6 7 //タブボタンの数を取得 8 var tabQuantity = $('.tab__button').length; 9 10 //タブの長さとボディの長さの差分を取得 11 var tabExtraDistance = $('.tab').width() - $('.tabContainer').width(); 12 13 /****************************************** 14 スライダー発動 15 *******************************************/ 16 17 var slider = $('.contents').bxSlider({ 18 pager:false, 19 controls:false, 20 onSlideBefore: function($slideElement, oldIndex, newIndex){ 21 //スライドする時に関数を呼び出す。newIndexはスライダーの現在地。 22 slideChange(newIndex); 23 } 24 }); 25 26 /****************************************** 27 スライドする時に発動する関数。タブの表示調整を行う。 28 *******************************************/ 29 30 function slideChange(newIndex){ 31 32 //クラスを調整 33 $('.tab__button').removeClass('active'); 34 $('.tab > div:nth-child(' + ( newIndex + 1 ) + ')').addClass('active'); 35 36 //スクロールするべき距離を取得。タブ全体の長さ / ( タブの個数 - 1 ) * スライドの現在地 37 var scrollDestination = ( tabExtraDistance / (tabQuantity - 1) ) * ( newIndex ); 38 39 //スクロール位置を調整 40 $('.tabContainer').animate({ scrollLeft: scrollDestination }, 'slow'); 41 42 } 43 44 /****************************************** 45 タブボタンクリックで発動する関数 46 *******************************************/ 47 48 $('.tab__button').on('click',function(e){ 49 50 //何番目の要素かを取ってスライドを移動する 51 var nth = $('.tab__button').index(this); 52 slider.goToSlide(nth); 53 54 //クリックイベントを無効化 55 e.preventDefault(); 56 57 }) 58 59}); 60

*jquery3系とbxsliderは相性が悪いそうなので、

<script src="https://code.jquery.com/jquery-1.12.4.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/bxslider/4.1.2/jquery.bxslider.min.js"></script>

を使用しています。

*コードに関してはcss以外そのままスマートニュースやグノシーのような、スワイプタブ切替機能を実装するを使用しています。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問