148

With Bootstrap class table-striped, every other row in my table has a background colour equal to #F9F9F9. How can I change this colour?

UnderDog
  • 141
  • 1
  • 4
  • 14
drake035
  • 3,869
  • 33
  • 97
  • 193

15 Answers15

155

Add the following CSS style after loading Bootstrap:

.table-striped>tbody>tr:nth-child(odd)>td, 
.table-striped>tbody>tr:nth-child(odd)>th {
   background-color: red; // Choose your own color here
 }
reformed
  • 4,205
  • 10
  • 58
  • 83
kyriakos
  • 1,739
  • 2
  • 9
  • 9
133
.table-striped > tbody > tr:nth-child(2n+1) > td, .table-striped > tbody > tr:nth-child(2n+1) > th {
   background-color: red;
}

add this line into your style.css after main bootstrap.css or you could use (odd) or (even) instead of (2n+1)

Florin
  • 4,997
  • 2
  • 19
  • 30
  • 119
    Don't do this. Next time you upgrade bootstrap you'll lose your custom override. Much better to have custom css in a separate file which you put directly after bootstrap.css in the head. – Ben Thurley Aug 08 '14 at 11:53
  • 1
    How would you change the background-color for hovering the whole row here? – Barry Michael Doyle Aug 19 '15 at 16:07
  • 2
    this page explain how to do it for a hover [http://stackoverflow.com/questions/15643037/how-do-i-change-the-hover-over-color-for-a-hover-over-table-in-bootstrap] – Yvon Huynh Nov 28 '15 at 22:20
  • 4
    This was the answer I needed, however, I added it to a separate CSS file, not the actual Bootstrap CSS. It's cascading so if I add it after the bootstrap and it works perfectly and keeps it out of the main bootstrap. Plus then I don't have to carry my own modified bootstrap instead I just add my css to each project that needs this. – raddevus Apr 06 '16 at 21:10
  • 1
    Never change any third-party library directly. Never! Just override the style in your own css file. – Mehrdad Feb 03 '17 at 18:18
16

If you are using Bootstrap 3, you can use Florin's method, or use a custom CSS file.

If you use Bootstrap less source instead of processed css files, you can directly change it in bootstrap/less/variables.less.

Find something like:

//** Background color used for `.table-striped`.
@table-bg-accent:               #f9f9f9;
Lucas S.
  • 692
  • 2
  • 11
  • 22
13

You have two options, either you override the styles with a custom stylesheet, or you edit the main bootstrap css file. I prefer the former.

Your custom styles should be linked after bootstrap.

<link rel="stylesheet" src="bootstrap.css">
<link rel="stylesheet" src="custom.css">

In custom.css

.table-striped>tr:nth-child(odd){
   background-color:red;
}
Eisa Adil
  • 1,673
  • 11
  • 16
5

Delete table-striped Its overriding your attempts to change row color.

Then do this In css

   tr:nth-child(odd) {
    background-color: lightskyblue;
    }

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

    th {
       background-color: lightseagreen;
    }
David Morrow
  • 191
  • 3
  • 8
5

With Bootstrap 4, the responsible css configuration in bootstrap.css for .table-striped is:

.table-striped tbody tr:nth-of-type(odd) {
  background-color: rgba(0, 0, 0, 0.05);
}

For a very simple solution, I just copied it into my custom.css file, and changed the values of background-color, so that now I have a fancier light blue shade:

.table-striped tbody tr:nth-of-type(odd) {
  background-color:  rgba(72, 113, 248, 0.068);
}
Anna Costalonga
  • 170
  • 2
  • 8
5

Easiest way for changing order of striped:

Add empty tr before your table tr tags.

Royal_MGH
  • 602
  • 4
  • 6
4
.table-striped>tbody>tr:nth-child(odd)>td,
.table-striped>tbody>tr:nth-child(odd)>th {
  background-color: #e08283;
  color: white;
}
.table-striped>tbody>tr:nth-child(even)>td,
.table-striped>tbody>tr:nth-child(even)>th {
  background-color: #ECEFF1;
  color: white;
}

Use 'even' for change colour of even rows and use 'odd' for change colour of odd rows.

ochs.tobi
  • 2,787
  • 7
  • 29
  • 48
3

I found this checkerboard pattern (as a subset of the zebra stripe) to be a pleasant way to display a two-column table. This is written using LESS CSS, and keys all colors off the base color.

@base-color: #0000ff;
@row-color: lighten(@base-color, 40%);    
@other-row: darken(@row-color, 10%);

tbody {
    td:nth-child(odd) { width: 45%; }
    tr:nth-child(odd) > td:nth-child(odd) {
        background: darken(@row-color, 0%); }
    tr:nth-child(odd) > td:nth-child(even) {
        background: darken(@row-color, 7%); }
    tr:nth-child(even) > td:nth-child(odd) {
        background: darken(@other-row, 0%); }
    tr:nth-child(even) > td:nth-child(even) {
        background: darken(@other-row, 7%); }
}

Note I've dropped the .table-striped, but doesn't seem to matter.

Looks like: enter image description here

John Lehmann
  • 7,517
  • 3
  • 54
  • 69
3

Don't customize your bootstrap CSS by directly editing bootstrap CSS file.Instead, I suggest to copy paste bootstrap CSS and save them in a different CSS folder and there you can customize or edit stylings suitable to your needs.

2

If using SASS and Bootstrap 4, you can change the alternating background row color for both .table and .table-dark with:

$table-accent-bg: #990000;
$table-dark-accent-bg: #990000;
ow3n
  • 5,268
  • 4
  • 47
  • 51
1

I came across this post while hunting down a solution for myself. By using chrome's inspector, I was able to determine that the striped color was being applied from the --bs-table-striped-color tag.

overriding that tag in your css:

<style scoped>
table {
--bs-table-striped-color: #85d1ee;
}
</style>
Waar
  • 11
  • 3
0

If you want to actually reverse the colors, you should add a rule that makes the "odd" rows white as well as making the "even" rows whatever color you want.

PhPGuy
  • 41
  • 3
0

I know this is an old post, but changing th or td color is not te right way. I was fooled by this post as well.

First load your bootstrap.css and add this in your own css. This way it is only 2 lines if you have a hovered table, else its only 1 line, unless you want to change odd and even :-)

.table-striped>tbody>tr:nth-child(odd) {
    background-color: LemonChiffon;
}
.table-hover tbody tr:hover {
    background-color: AliceBlue;
}
Henry
  • 1,083
  • 1
  • 9
  • 10
0

Bootstrap 5 using --#{$variable-prefix}table-accent-bg

take into consideration

.table-striped>tbody>tr:nth-child(odd) > td:hover {
--#{$variable-prefix}table-accent-bg:  #000099;
}
Reuven770
  • 1
  • 1