前提・実現したいこと
タブの中にある特定の場所へ別ページからリンクを飛ばしたいです。
https://exampla01/
のページでタブの切り替えを下記のように実装しています。
【タブ1】
https://exampla01/#tab01
【タブ2】
https://exampla01/#tab02
タブ2の中に
<section id="link_target"></section>このようにセクションがあり、#link_targetへ別ページからアンカーリンク を飛ばしたいのですが、
どのようにすれば良いかわからず困っております。
試したこと
【別ページにて】
<a href="https://exampla01/#link_target">リンク先</a>
という風にすると飛ぶと思ったのですが、
リンク先がtab2の中にあるせいか、上手く動作しません。
jqueryを使えば、解決できるかと調べてみたのですが、解決できず質問をさせていただきました。
ご教授いただけますと幸いです。
どうぞ宜しくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
【別ページにて】
<a href="https://exampla01/#link_target">リンク先</a>
でページ遷移してきたとして、
Location.hash で #以下のアンカーを取得します。
それが"#link_target"だったら、tab02のラジオボタンを選択(チェック)する。
$('#tab02').prop('checked', true);
その後、#link_targetアンカーへ移動。
location.hash = "link_target"
というロジックでいいかと。あるいは、animate でスムーズスクロールさせる。
html
1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="UTF-8"> 5 <title>a</title> 6 <style> 7 /*タブ切り替え全体のスタイル*/ 8 .tabs { 9 margin-top: 50px; 10 padding-bottom: 40px; 11 background-color: #fff; 12 box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); 13 width: 700px; 14 margin: 0 auto; 15 } 16 17 /*タブのスタイル*/ 18 .tab_item { 19 width: calc(100%/3); 20 height: 50px; 21 border-bottom: 3px solid #5ab4bd; 22 background-color: #d9d9d9; 23 line-height: 50px; 24 font-size: 16px; 25 text-align: center; 26 color: #565656; 27 display: block; 28 float: left; 29 text-align: center; 30 font-weight: bold; 31 transition: all 0.2s ease; 32 } 33 34 .tab_item:hover { 35 opacity: 0.75; 36 } 37 38 /*ラジオボタンを全て消す*/ 39 input[name="tab_item"] { 40 display: none; 41 } 42 43 /*タブ切り替えの中身のスタイル*/ 44 .tab_content { 45 display: none; 46 padding: 40px 40px 0; 47 clear: both; 48 overflow: hidden; 49 } 50 51 52 /*選択されているタブのコンテンツのみを表示*/ 53 #tab01:checked~#tab01_content, 54 #tab02:checked~#tab02_content, 55 #tab03:checked~#tab03_content { 56 display: block; 57 } 58 59 /*選択されているタブのスタイルを変える*/ 60 .tabs input:checked+.tab_item { 61 background-color: #5ab4bd; 62 color: #fff; 63 } 64 </style> 65 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> 66</head> 67 68<body> 69 <div class="tabs"> 70 <input id="tab01" type="radio" name="tab_item" checked> 71 <label class="tab_item" for="tab01">tab01</label> 72 <input id="tab02" type="radio" name="tab_item"> 73 <label class="tab_item" for="tab02">tab02</label> 74 <input id="tab03" type="radio" name="tab_item"> 75 <label class="tab_item" for="tab03">tab03</label> 76 <div class="tab_content" id="tab01_content"> 77 <p>tab01</p><p>tab01</p><p>tab01</p><p>tab01</p><p>tab01</p> 78 <p>tab01</p><p>tab01</p><p>tab01</p><p>tab01</p><p>tab01</p> 79 <p>tab01</p><p>tab01</p><p>tab01</p><p>tab01</p> 80 </div> 81 <div class="tab_content" id="tab02_content"> 82 <a href="#link_target">link</a> 83 <p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p> 84 <p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p> 85 <p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p> 86 <div id="link_target">link_target</div> 87 <p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p> 88 <p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p> 89 <p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p><p>tab02</p> 90 </div> 91 <div class="tab_content" id="tab03_content"> 92 <p>tab03</p><p>tab03</p><p>tab03</p><p>tab03</p><p>tab03</p> 93 <p>tab03</p><p>tab03</p><p>tab03</p><p>tab03</p><p>tab03</p> 94 <p>tab03</p><p>tab03</p><p>tab03</p><p>tab03</p> 95 </div> 96 <script> 97 $(function () { 98 if (window.location.hash === "#link_target") { 99 $('#tab02').prop('checked', true); 100 $('html,body').animate({ 101 scrollTop: $('#link_target').offset().top 102 }, 'fast'); 103 } 104 }); 105 </script> 106</body> 107</html>
どうせスクリプト(jQuery)は必須になるのだから、タブ切り替えもjQueryでした方がシンプルになると思います。
投稿2020/03/27 12:51
編集2020/03/27 15:03総合スコア34084
0
タブの切り替えをなにでやるかによります。
かんたんなところでクラスの付替えでやるとこんな感じ
投稿2020/03/27 12:49
編集2020/03/27 12:50総合スコア116835
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
URLを
https://exampla01/#tab02?s=link_target
みたいな感じにして
jQueryでパラーメーターを切り抜きして、jQueryで移動すればできると思います。
投稿2020/03/27 08:12
総合スコア10429
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/27 09:34
2020/03/27 13:01
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/27 15:33
2020/03/28 02:58 編集