Warna baris tabel alternatif menggunakan CSS?


462

Saya menggunakan tabel dengan warna baris alternatif dengan ini.

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>

Di sini saya menggunakan kelas untuk tr, tetapi saya ingin menggunakan hanya untuk table. Ketika saya menggunakan class untuk tabel daripada ini berlaku pada tralternatif.

Bisakah saya menulis HTML saya seperti ini menggunakan CSS?

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

Bagaimana saya bisa membuat baris memiliki "zebra stripes" menggunakan CSS?


1
Saya telah membuat demo menggunakan semua pola yang mungkin untuk nth-child () - xengravity.com/demo/nth-child
xengravity

Jawaban:


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>

Ada pemilih CSS, benar-benar pemilih semu, disebut nth-child. Dalam CSS murni Anda dapat melakukan hal berikut:

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

Catatan: Tidak ada dukungan di IE 8.

Atau, jika Anda memiliki jQuery:

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

apakah mungkin juga mengubah warna hyperlink dari baris alternatif. Saya ingin warna hyperlink yang berbeda untuk baris genap dan yang lain untuk ganjil. Terima kasih
عثمان غني

4
Jawaban bagus! Tetapi hanya untuk informasi ada pemilih CSS lain yang dapat digunakan yaitu. tr:nth-of-type(odd/even)
Nikhil Nanjappa

2
@ عثمانغني: Ya, lakukan sajatr:nth-child(even) a
Gerard

1
Tidak berfungsi jika Anda menulis html Anda secara dinamis. Maka Anda perlu menambahkan kelas ke baris.
erik

Pada 2019: Ini bukan lagi solusi terbaik. Gunakan CSS murni .
Chiramisu

158

Anda memiliki :nth-child()pseudo-class:

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

Pada hari-hari awal :nth-child()yang mendukung browser agak miskin. Itu sebabnya pengaturan class="odd"menjadi teknik yang umum. Pada akhir 2013 saya senang mengatakan bahwa IE6 dan IE7 akhirnya mati (atau cukup sakit untuk berhenti merawat) tetapi IE8 masih ada - untungnya, itu satu-satunya pengecualian.


3
Jawaban yang disukai karena tidak menerapkan CSS ke header
Mike

Hai ini sudah terlambat beberapa tahun tetapi bagaimana dengan menambahkan kelas yang dipilih dengan warna bg dengan jqeury ke baris tabel ketika diklik. Saya perhatikan bahwa: nth-child pseudo class bg-color menimpa ketika Anda menambahkan kelas "terpilih" dengan jqeury
dutchkillsg

@dutchkillsg Itu tampaknya menjadi pertanyaan baru daripada komentar untuk jawaban saya ...
vlvaro González

Untuk "garis zebra" (yaitu vertikal), cukup tukar tr:nth-child(odd)dengan td:nth-of-type(odd). Perhatikan bahwa dalam hal ini Anda menerapkan kelas pseudo yang berbeda ke elemen tddaripada trelemen.
Chiramisu

36

Cukup tambahkan berikut ini ke kode html Anda (withing <head>) dan Anda selesai.

HTML:

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

Lebih mudah dan lebih cepat daripada contoh jQuery.


Ini harus menjadi jawaban yang diterima. Sejauh mungkin, CSS harus menangani gaya, sedangkan javascript dapat digunakan untuk menangani masalah lain.
Tormod Haugene

Saya tidak melakukan html setiap hari. #ccctidak tampak seperti kode warna yang valid untuk saya. Bisakah Anda jelaskan? Terima kasih.
tommy.carstensen

1
@ tommy.carstensen itu disebut "bentuk hexadecimal steno". Pada dasarnya #cccakan diperluas ke #cccccc, yang berarti bahwa setiap warna RGB memiliki nilai heksadesimal cc, atau nilai desimal 204(yaitu rgb(204, 204, 204)). Baca lebih lanjut di sini -> en.wikipedia.org/wiki/Web_colors#Shorthand_hexadecimal_form
Nick Grealy

Tidak berfungsi di Versi Chrome 78.0.3904.108
IlludiumPu36

13

dapatkah saya menulis html saya seperti ini dengan menggunakan css?

Ya, Anda bisa tetapi kemudian Anda harus menggunakan :nth-child()pemilih semu (yang memiliki dukungan terbatas):

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

13

Kita dapat menggunakan aturan CSS aneh dan genap dan metode jQuery untuk warna baris alternatif

Menggunakan CSS

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

Menggunakan 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

Sebagian besar kode di atas tidak akan berfungsi dengan versi IE. Solusi yang berfungsi untuk IE + browser lain adalah ini.

   <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 saya tahu jQuery cukup ada di mana-mana di situs ini, tetapi terlepas dari itu Anda tidak boleh memposting jQuery tanpa penjelasan. Script ini tidak akan bekerja sendiri.
DisgruntledGoat

4

Anda dapat menggunakan pemilih n-child (odd / even) namun tidak semua browser ( yaitu 6-8, ff v3.0 ) mendukung aturan ini maka mengapa sebagian besar solusi kembali ke beberapa bentuk solusi javascript / jquery untuk menambahkan kelas ke baris untuk browser yang tidak patuh ini untuk mendapatkan efek garis harimau.


3

Ada cara yang cukup mudah untuk melakukan ini di PHP, jika saya mengerti permintaan Anda, saya berasumsi bahwa Anda kode dalam PHP dan Anda menggunakan CSS dan javascript untuk meningkatkan output.

Output dinamis dari database akan membawa for loop untuk beralih melalui hasil yang kemudian dimuat ke dalam tabel. Cukup tambahkan pemanggilan fungsi seperti ini:

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

kemudian tambahkan fungsi ke halaman atau file perpustakaan:

function getbgc($trcount)
{

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

}

Sekarang ini akan berganti secara dinamis antara warna di setiap baris tabel yang baru dibuat.

Ini jauh lebih mudah daripada mengacaukan dengan CSS yang tidak berfungsi di semua browser.

Semoga ini membantu.


terima kasih @mark. Itu tidak memperbaiki situs itu akan dalam PHP, .net atau HTML sederhana.
Kali Charan Rajput
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.