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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

Q&A

解決済

2回答

712閲覧

タブをクリックした時のクラスの付与・除去について

rui-kanzaki

総合スコア2

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

jQuery

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

0グッド

1クリップ

投稿2022/01/19 07:57

どなたか回答お願いいたします。

問題
クリックしているタブ(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});

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

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

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

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

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

guest

回答2

0

about.phpのhtml内にareaクラスが設定されていないからでは?

投稿2022/01/20 00:48

yambejp

総合スコア114839

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

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

rui-kanzaki

2022/01/20 01:58

すいません、先に回答頂いた方ので試したら解決いたしました。 貴重なお時間割いて頂きありがとうございました。
guest

0

ベストアンサー

本質的な回答になっていないんですが、以下のようにすると動きました。(なぜでしょうかね…?)


GethashID()

javascript

1$('.tab li').removeClass("active") 2// 若干遅らせるとなぜか動く 3setTimeout(() => { 4 $(parentElm).addClass("active"); 5}, 10)

投稿2022/01/19 09:58

sum6

総合スコア232

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

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

rui-kanzaki

2022/01/20 01:57

記載の通りしてみたらなぜか反映されました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問