CSSを使用した代替表の行の色?


462

私はこれと交互の行の色のテーブルを使用しています。

tr.d0 td {
  background-color: #CC9999;
  color: black;
}
tr.d1 td {
  background-color: #9999CC;
  color: black;
}
<table>
  <tr class="d0">
    <td>One</td>
    <td>one</td>
  </tr>
  <tr class="d1">
    <td>Two</td>
    <td>two</td>
  </tr>
</table>

ここではのクラスtrを使用していますが、だけに使用したいと思いtableます。テーブルにクラスを使用すると、これがtr代替に適用されます。

CSSを使用してこのようにHTMLを記述できますか?

<table class="alternate_color">
    <tr><td>One</td><td>one</td></tr>
    <tr><td>Two</td><td>two</td></tr>
    </table>

CSSを使用して行に「ゼブラストライプ」を持たせるにはどうすればよいですか?


1
nth-child()のすべての可能なパターンを使用してデモを作成しました-xengravity.com/demo/nth-child
xengravity

回答:


760

$(document).ready(function()
{
  $("tr:odd").css({
    "background-color":"#000",
    "color":"#fff"});
});
tbody td{
  padding: 30px;
}

tbody tr:nth-child(odd){
  background-color: #4C8BF5;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr>
<td>9</td>
<td>10</td>
<td>11</td>
<td>13</td>
</tr>
</tbody>
</table>

CSSセレクター、実際にはnth-childと呼ばれる疑似セレクターがあります。純粋なCSSでは、次のことができます。

tr:nth-child(even) {
    background-color: #000000;
}

注: IE 8ではサポートされていません。

または、jQueryがある場合:

$(document).ready(function()
{
  $("tr:even").css("background-color", "#000000");
});

代替行のハイパーリンクの色も変更できますか?偶数行と奇数行に異なるハイパーリンクの色が必要です。おかげで
عثمانغني

4
正解です。ただし、参考までに、使用できる別のCSSセレクタがあります。tr:nth-of-type(odd/even)
Nikhil Nanjappa 2014年

2
@عثمانغني:はい、そうしますtr:nth-child(even) a
ジェラール

1
HTMLを動的に記述する場合は機能しません。次に、クラスを行に追加する必要があります。
erik 2016年

2019年:これはもはや最良のソリューションではありません。純粋なCSSを使用します。
ちらみす

158

あなたは:nth-child()疑似クラスを持っています:

table tr:nth-child(odd) td{
    ...
}
table tr:nth-child(even) td{
    ...
}

ブラウザーのサポートの初期の頃は:nth-child()、ちょっと貧弱でした。そのため、セッティングが非常に一般的なテクニックになりました。2013年の終わりに、IE6とIE7がようやく死んだ(または気にするのをやめるのに十分な病気)と言ってうれしいですが、IE8はまだ残っています。ありがたいことに、それは唯一の例外です。class="odd"


3
ヘッダーにCSSを適用しないため
Mike

こんにちはこれは数年遅れですが、クリックしたときにjqeuryのbg-colorで選択したクラスをテーブル行に追加するのはどうですか。:nth-​​child疑似クラスbg-colorがjqeuryで「選択された」クラスを追加すると上書きされることに気づきました
dutchkillsg

表示されますがすべき@dutchkillsg ブランドの新しい問題ではなく、私の答えにコメント...
アルバロ・ゴンサレス

「ゼブラストライプ」(つまり垂直)の場合は、と交換tr:nth-child(odd)するだけtd:nth-of-type(odd)です。この場合tdtr要素ではなく別の疑似クラスを適用していることに注意してください。
ちらみす

36

以下をhtmlを使用してhtmlコードに追加するだけで<head>完了です。

HTML:

<style>
      tr:nth-of-type(odd) {
      background-color:#ccc;
    }
</style>

jQueryの例よりも簡単で高速です。


これは受け入れられる答えになるはずです。CSSは可能な限りスタイル設定を処理する必要がありますが、JavaScriptは他の問題を処理するために使用できます。
Tormod Haugene

私は毎日htmlをしていません。#ccc私には有効なカラーコードのようには見えません。説明できる?ありがとう。
tommy.carstensen 2018

1
@ tommy.carstensenは「省略形16進形式」と呼ばれます。基本的に#cccはに展開されます#cccccc。つまり、各RGBカラーは16進数値ccまたは10進数値204(つまりrgb(204, 204, 204))を持ちます。詳しくはこちら-> en.wikipedia.org/wiki/Web_colors#Shorthand_hexadecimal_form
Nick Grealy

Chromeバージョン78.0.3904.108では機能しません
IlludiumPu36

13

use cssでこのように私のhtmlを書くことができますか?

はい、できますが、:nth-child()擬似セレクターを使用する必要があります(サポートは限定されます)。

table.alternate_color tr:nth-child(odd) td{
   /* styles here */
}
table.alternate_color tr:nth-child(even) td{
   /* styles here */
}

13

奇数行と偶数行のCSSルールとjQueryメソッドを交互の行の色に使用できます

CSSの使用

table tr:nth-child(odd) td{
           background:#ccc;
}
table tr:nth-child(even) td{
            background:#fff;
}

jQueryの使用

$(document).ready(function()
{
  $("table tr:odd").css("background", "#ccc");
  $("table tr:even").css("background", "#fff");
});

table tr:nth-child(odd) td{
           background:#ccc;
}
table tr:nth-child(even) td{
            background:#fff;
}
<table>
  <tr>
    <td>One</td>
    <td>one</td>
   </tr>
  <tr>
    <td>Two</td>
    <td>two</td>
  </tr>
</table>


10

上記のコードのほとんどは、IEバージョンでは機能しません。IE +他のブラウザで機能するソリューションはこれです。

   <style type="text/css">
      tr:nth-child(2n) {
             background-color: #FFEBCD;
        }
</style>

9
<script type="text/javascript">
$(function(){
  $("table.alternate_color tr:even").addClass("d0");
   $("table.alternate_color tr:odd").addClass("d1");
});
</script>

46
OK私はjQueryがこのサイトのいたるところにあることを知っていますが、説明なしにjQueryを投稿するべきではありません。このスクリプトは単独では機能しません。
DisgruntledGoat 2010年

4

nth-child(odd / even)セレクターを使用できますが、すべてのブラウザー(つまり、6-8、ff v3.0)がこれらのルールをサポートしているわけではないため、ほとんどのソリューションが何らかの形式のjavascript / jqueryソリューションにフォールバックしてクラスをこれらの非対応ブラウザの行は、虎の縞の効果を得るためのものです。


3

PHPでこれを行うにはかなり簡単な方法があります。クエリを理解できれば、PHPでコーディングしていて、CSSとJavaScriptを使用して出力を拡張していると思います。

データベースからの動的な出力はforループを実行して結果を反復処理し、結果をテーブルにロードします。次のように関数呼び出しを追加するだけです:

echo "<tr style=".getbgc($i).">";  //this calls the function based on the iteration of the for loop.

次に、関数をページまたはライブラリファイルに追加します。

function getbgc($trcount)
{

$blue="\"background-color: #EEFAF6;\"";
$green="\"background-color: #D4F7EB;\"";
$odd=$trcount%2;
    if($odd==1){return $blue;}
    else{return $green;}    

}

これにより、新しく生成された各テーブル行で動的に色が切り替わります。

すべてのブラウザで機能しないCSSをいじるよりもはるかに簡単です。

お役に立てれば。


@markに感謝します。サイトがPHP、.net、または単純なHTMLになることは修正されません。
Kali Charan Rajput 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.