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

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

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

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1732閲覧

cssにて nth-child display:none

_silver

総合スコア13

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/02/12 09:44

編集2020/02/12 09:46

前提・実現したいこと

htmlにてテーブル内の<tr>タグ要素を交互に色分けして表示したい

発生している問題・エラーメッセージ

しかし、ボタンで出し分けをする関係で、<tr>タグがdisplay:noneになったりならなかったりするので
cssの「:nth-child(even)」がうまく働いてくれない。

試したこと

<tr class="test_1 on" style="display: table-row;">...</tr> <tr class="test_2 on" style="display: table-row;">...</tr> <tr class="test_3 off" style="display: none;">...</tr> <tr class="test_4 on" style="display: table-row;">...</tr> <tr class="test_5 off" style="display: none;">...</tr> <tr class="test_6 off" style="display: none;">...</tr>

//------------------------------
// test_1 (背景:白)
//------------------------------
//------------------------------
// test_2 (背景:黒)
//------------------------------
//------------------------------
// test_4 (背景:黒) ← 本当は白くしたい
//------------------------------

ボタン押下

<tr class="test_1 off" style="display: none;">...</tr> <tr class="test_2 on" style="display: table-row;">...</tr> <tr class="test_3 on" style="display: table-row;>...</tr> <tr class="test_4 off" style="display: none;">...</tr> <tr class="test_5 on" style="display: table-row;">...</tr> <tr class="test_6 off" style="display: none;">...</tr>

//------------------------------
// test_2 (背景:黒) ← 本当は白くしたい
//------------------------------
//------------------------------
// test_3 (背景:白) ← 本当は黒くしたい
//------------------------------
//------------------------------
// test_5 (背景:白)
//------------------------------

css

tr.on:nth-child(even){
background:#e6e9f0;
}

cssでtrタグのclass="on"のものにnth-childで偶数番目を黒くするというロジックなのですが、どうもclass="off"も含めてしまっているようなのです。
説明下手で申し訳ないですが、どなたかいい方法ご存じありませんか?

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

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

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

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

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

guest

回答2

0

tr.on:nth-child(even){

「偶数番目のtrのonクラスがついているもの」と解釈してください
onクラスのn番目というのはcssの処理ではありません

投稿2020/02/12 09:49

編集2020/02/12 09:49
yambejp

総合スコア114843

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

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

_silver

2020/02/12 10:36

cssでは制御は不可能ということでしょうか。 jqueryでなら実現できますか? それとも、display:noneは諦めて、要素を動的に作ったり消したりする必要があるということでしょうか?
guest

0

自己解決

jquery

1 2if($('tr[class^=test_]').css('display')){ 3 4~~~~~~~~~~~中略~~~~~~~~~~~~ 5 6 $(".test_" + z).each(function(i){ 7 if(i%2==0){ 8 $(this).addClass('on_' + 'black'); 9 }else{ 10 $(this).addClass('on_' + 'white'); 11 } 12 }); 13} 14

css

1tr.on_black{ 2background:#e6e9f0; 3}

こんな感じで、表示中の<tr>に上からclassを連番で付与し、on_blackのみcssで
黒くするようにして実現しました

投稿2020/02/13 02:48

_silver

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問