0

This is a general question, given a html component (a table for example), I want to add a new css class overwriting the current ones. For example I want to overwrite the td hover of the following table, adding a new class in order to do not affect the other tables that use the classes in common:

html (using bootstrap classes)

<table id="calDate" class="table table-striped table-bordered table-condensed table-hover alignCenter">
<tbody>
<tr>
<td>
<tbody>
</tbody>
table>

css

table {
max-width: 100%;
background-color: transparent;
border-collapse: collapse;
border-spacing: 0;
}

.table {
width: 100%;
max-width: 90%;
margin-bottom: 5px;
}

.table th,
.table td {
padding: 8px;
line-height: 20px;
text-align: left;
vertical-align: top;
border-top: 1px solid #dddddd;
}

.table-hover tbody tr:hover > td,
.table-hover tbody tr:hover > th {
 background-color: #f5f5f5;
}

I try to overwhrite the last class creating a new one named .alignCenter, trying to change the td hover behavior and also the text-align, the aligment worked but the mouse over it doesn't worked:

.alignCenter {

}

.alignCenter-hover tbody tr:hover > td,
.alignCenter-hover tbody tr:hover > th {
 background-color: #df8505;
}

.alignCenter th, .alignCenter td{
 text-align: center;
 }
  1. What's the usual way to create a new css class overwhiting the existent classes?
  2. How can I use the new created css class to change the td hover behavior for example change the background color?
  3. In the example the class .table has max-width: 100%; and it's defined again below with max-width: 90%;. Which max-width is used in the table, and why?

3 Answers 3

1

Ok, let me answer your questions one by one:

-1. What's the usual way to create a new css class overwhiting the existent classes?

You can overwrite those by either modifying the classes themselves or add a different value for another class on the same element (or inline style them).

-2. How can I use the new created css class to change the td hover behavior for example change the background color?

Simply do this:

tr:hover td {
    /* do hover stuff */
}

-3. In the example the class .table has max-width: 100%; and it's defined again below with max-width: 90%;. Which max-width is used in the table, and why?

In CSS it's always the most recently (last) command that will "win". You can, however, override that using !important like this:

.table {
    /* ... */
    max-width: 90% !important;
    /* ... */
}    

And more: get rid of the table-hover, it's unnecessary; instead set up its hovered variation like this:

.table:hover {
    /* stuff goes here */
}
Sign up to request clarification or add additional context in comments.

Comments

0

Take a look at this: http://www.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

the class attributes at the class below the other class will count (so the order of the stylesheet matters), else you can use ex:

max-width:90%!important;

or choose are more specific selector

Comments

0

Thing is,

You have to create new class.

.old
{
//already have
}
.new
{
// do your stuff with !important so it will take this
// background-color:#fff !important
}

or

td:hover > .new
{
// do your stuff
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.