ラジオボタンで表示・非表示を切り替えるようにしたいが一部ボタンを選択時に表示されない
解決済
回答 1
投稿
- 評価
- クリップ 0
- VIEW 673
前提・実現したいこと
HTMLとCSSのみでWordPress上でタブで表示・非表示を切り替えれるテーブルを作っています。
タブの中にさらにラジオボタンで複数の表を切り替えられるようにしたいです。
【作りたいもの】こちらのサイトのランキングにあるようなものです
【参考サイト】こちらを参考に作っています
問題
1.inputでcheckedを入れたラジオボタンが最初にチェックされない
2.ボタンID 1−c,2-a,2-c,3-aの中身が表示されない
ソースコード
<div class="tabs">
<input id="tab1" type="radio" name="tab_item" checked>
<label class="tab_item item3" for="tab1">総合</label>
<input id="tab2" type="radio" name="tab_item">
<label class="tab_item item3" for="tab2">人気</label>
<input id="tab3" type="radio" name="tab_item">
<label class="tab_item item3" for="tab3">安い</label>
<div class="tab_content" id="tab1_content">
<div class="tab_content_description">
<div class="intab">
<input id="intab1_a" type="radio" name="intab_item" checked>
<label class="intab_item" for="intab1_a">総合1</label>
<input id="intab1_b" type="radio" name="intab_item">
<label class="intab_item" for="intab1_b">おいしさ1</label>
<input id="intab1_c" type="radio" name="intab_item">
<label class="intab_item" for="intab1_c">安さ1</label>
<div class="intab_content" id="intab1_a_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>うまい水</td>
</tr>
<tr>
<td>2位</td>
<td>すごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="intab_content" id="intab1_b_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>もっとうまい水</td>
</tr>
<tr>
<td>2位</td>
<td>もっとすごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="intab_content" id="intab1_c_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>とてもうまい水</td>
</tr>
<tr>
<td>2位</td>
<td>とてもすごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="tab_content" id="tab2_content">
<div class="tab_content_description">
<div class="intab">
<input id="intab2_a" type="radio" name="intab_item" checked>
<label class="intab_item" for="intab2_a">総合2</label>
<input id="intab2_b" type="radio" name="intab_item">
<label class="intab_item" for="intab2_b">おいしさ2</label>
<input id="intab2_c" type="radio" name="intab_item">
<label class="intab_item" for="intab2_c">安さ2</label>
<div class="intab_content" id="intab2_a_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>うまい水</td>
</tr>
<tr>
<td>2位</td>
<td>すごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="intab_content" id="intab2_b_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>もっとうまい水</td>
</tr>
<tr>
<td>2位</td>
<td>もっとすごい水</td>
</tr>
<tr>
</tbody>
</table>
</div>
</div>
<div class="intab_content" id="intab2_c_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>とてもうまい水</td>
</tr>
<tr>
<td>2位</td>
<td>とてもすごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<div class="tab_content" id="tab3_content">
<div class="tab_content_description">
<div class="intab">
<input id="intab3_a" type="radio" name="intab_item" checked>
<label class="intab_item" for="intab3_a">総合3</label>
<input id="intab3_b" type="radio" name="intab_item">
<label class="intab_item" for="intab3_b">おいしさ3</label>
<input id="intab3_c" type="radio" name="intab_item">
<label class="intab_item" for="intab3_c">安さ3</label>
<div class="intab_content" id="intab3_a_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>うまい水</td>
</tr>
<tr>
<td>2位</td>
<td>すごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="intab_content" id="intab3_b_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>もっとうまい水</td>
</tr>
<tr>
<td>2位</td>
<td>もっとすごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="intab_content" id="intab3_c_content">
<div class="intab_content_description">
<table style="width: 100%;">
<tbody>
<tr>
<td>1位</td>
<td>とてもうまい水</td>
</tr>
<tr>
<td>2位</td>
<td>とてもすごい水</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
/*タブ切り替え全体のスタイル*/
.tabs {
margin-top: 50px;
padding-bottom: 40px;
background-color: #fff;
border:solid 1px #e3e3e3;
width: 100%;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
margin: 0 auto;
}
/*タブのスタイル*/
.tab_item {
height: 50px;
border-bottom: 3px solid #5ab4bd;
background-color: #d9d9d9;
line-height: 50px;
font-size: 16px;
text-align: center;
color: #565656;
display: block;
float: left;
text-align: center;
font-weight: bold;
transition: all 0.2s ease;
}
.tab_item:hover {
opacity: 0.75;
}
.item1 {
width: 100%;
}
.item2 {
width: calc(100%/2);
}
.item3 {
width: calc(100%/3);
}
.item4 {
width: calc(100%/3);
}
/*ラジオボタンを全て消す*/
input[name="tab_item"] {
display: none;
}
/*タブ切り替えの中身のスタイル*/
.tab_content {
display: none;
padding: 5px 5px 0;
clear: both;
overflow: hidden;
}
/*選択されているタブのコンテンツのみを表示*/
#tab1:checked ~ #tab1_content,
#tab2:checked ~ #tab2_content,
#tab3:checked ~ #tab3_content {
display: block;
}
/*選択されているタブのスタイルを変える*/
.tabs input:checked + .tab_item {
background-color: #5ab4bd;
color: #fff;
}
/* タブの中のタブ2 */
/*タブ切り替え全体のスタイル*/
.intab {
width: 100%;
}
/*タブのスタイル*/
.intab_item {
/* float: left; */
border:solid 1px #86C7CD;
background-color:#fff;
margin:5px 2px;
padding:0 5px;
border-radius:5%;
}
/*ラジオボタンを全て消す*/
input[name="intab_item"] {
display: none;
}
/*タブ切り替えの中身のスタイル*/
.intab_content {
display: none;
padding: 4px 4px 0;
clear: both;
overflow: hidden;
}
/*選択されているタブのコンテンツのみを表示*/
#intab1_a:checked ~ #intab1_a_content,
#intab1_b:checked ~ #intab1_b_content,
#intab1_c:checked ~ #intab1_c_content
#intab2_a:checked ~ #intab2_a_content,
#intab2_b:checked ~ #intab2_b_content,
#intab2_c:checked ~ #intab2_c_content
#intab3_a:checked ~ #intab3_a_content,
#intab3_b:checked ~ #intab3_b_content,
#intab3_c:checked ~ #intab3_c_content
{
display: block;
}
/*選択されているタブのスタイルを変える*/
.intab input:checked + .intab_item {
background-color: #5ab4bd;
color: #fff;
}
試したこと
子タブのIDの命名規則変更(競合を疑って)
1−1 〜 3−3 → 1-a ~ 3-c → 1~9
補足情報(FW/ツールのバージョンなど)
CSSが1-a〜1-cまでのときはすべて正常に動きます(もちろんタブ1の部分のみ)
2-a以降も追加すると一部表示されないタブが出てきます。
コードが長く、また文字数の関係で十分な状況解説ができず申し訳ありませんが、よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
ラジオボタンのnameがすべて"intab_item"
になっているので、そこをグループごとに変更してみてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる