Вопрос

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?
Это было полезно?

Решение

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 */
}

Другие советы

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

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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top