どなたか回答お願いいたします。
問題
クリックしているタブ(A)のborder-bottomが切り替わりません。
jQuery を使い、複数あるタブをクリックしたら切り替わるようにタブとエリアにクラス名の付与・除去を行いました。
同じタブをページ上部と下部に用意したのですが、上部のタブ(A)のborder-bottomだけが切り替わりません。
下部のタブ(B)のborder-bottomは切り替わります。
(A)には.activeがなぜかついてくれません。
よろしくお願いいたします。
about.php
1<!-- 上部のタブ(A) --> 2<ul class="tab"> 3 <li id="one_tab" class="one_tab"> 4 <a href="#tab01"> 5 company profile<span class="tab_inner">会社概要</span> 6 </a> 7 </li> 8 <li class="one_tab"> 9 <a href="#tab02"> 10 service center<span class="tab_inner">サービスセンターのご案内</span> 11 </a> 12 </li> 13 <li class="one_tab"> 14 <a href="#tab03"> 15 social contributions<span class="tab_inner">社会貢献活動</span> 16 </a> 17 </li> 18 </ul> 19 20タブコンテンツ内はちゃんと作動するので省力。 21 22<!-- 下部のタブ(B) --> 23<ul class="tab"> 24 <li class="one_tab"> 25 <a href="#tab01"> 26 <button type="button" onclick="location.href='#tab01-back'"> 27 company profile<span class="tab_inner">会社概要</span> 28 </button> 29 </a> 30 </li> 31 <li class="one_tab"> 32 <a href="#tab02"> 33 <button type="button" onclick="location.href='#tab02-back'"> 34 service center<span class="tab_inner">サービスセンターのご案内</span> 35 </button> 36 </a> 37 </li> 38 <li class="one_tab"> 39 <a href="#tab03"> 40 <button type="button" onclick="location.href='#tab03-back'"> 41 social contributions<span class="tab_inner">社会貢献活動</span> 42 </button> 43 </a> 44 </li> 45 </ul>
style.css
1.tab{ 2 display: flex; 3 flex-wrap: wrap; 4 margin: 0 auto; 5 padding: 0 0 8rem 0; 6 max-width: 1160px; 7} 8 9.tab li { 10 font-size: 2rem; 11 color: #343434; 12 cursor: pointer; 13 flex: 1; 14 order: -1; 15 padding: 12px 24px; 16 position: relative; 17 text-align: center; 18 transition: cubic-bezier(0.4, 0, 0.2, 1) .2s; 19 user-select: none; 20 white-space: nowrap; 21 -webkit-tap-highlight-color: transparent; 22 border-bottom: 1px solid #343434; /* これがクリック前 */ 23 margin:0 3rem; 24 display: inline-block; 25 font-family: 'Josefin Sans'; 26} 27 28/*liにactiveクラスがついた時の形状*/ 29/* .tab li.active a */ 30.tab li.active { 31 background:#fff; 32 border-bottom: 5px solid #343434; /* これがクリック後 */ 33} 34 35/*エリアの表示非表示と形状*/ 36.area { 37 display: none;/*はじめは非表示*/ 38 opacity: 0;/*透過0*/ 39 background: #fff; 40 /* padding:50px 20px; */ 41} 42 43/*areaにis-activeというクラスがついた時の形状*/ 44.area.is-active { 45 display: block;/*表示*/ 46 animation-name: displayAnime;/*ふわっと表示させるためのアニメーション*/ 47 animation-duration: 2s; 48 animation-fill-mode: forwards; 49} 50 51@keyframes displayAnime{ 52 from { 53 opacity: 0; 54 } 55 to { 56 opacity: 1; 57 } 58} 59
js
1function GethashID (hashIDName){ 2 if(hashIDName){ 3 $('.tab li').find('a').each(function() { 4 var idName = $(this).attr('href'); 5 if(idName == hashIDName){ 6 var parentElm = $(this).parent(); 7 $('.tab li').removeClass("active"); 8 $(parentElm).addClass("active"); 9 $(".area").removeClass("is-active"); 10 $(hashIDName).addClass("is-active"); 11 } 12 }); 13 } 14} 15 16//タブをクリックしたら 17$('.tab a').on('click', function() { 18 var idName = $(this).attr('href'); 19 GethashID (idName); 20 return false; 21}); 22 23 24// 上記の動きをページが読み込まれたらすぐに動かす 25$(window).on('load', function () { 26 $('.tab li:first-of-type').addClass("active"); //最初のliにactiveクラスを追加 27 $('.area:first-of-type').addClass("is-active"); //最初の.areaにis-activeクラスを追加 28 var hashName = location.hash; //リンク元の指定されたURLのハッシュタグを取得 29 GethashID (hashName);//設定したタブの読み込み 30});
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/20 01:58