2012-03-27 22 views
2

Ich habe eine Tabelle mit Reihen von abwechselnden Farben, zB:css: Klasse, die eine Farbe in vorhandene Hintergrundfarbe mischt?

<table> 
    <tr class="even"><td></td><td></td></tr> 
    <tr class="odd"> <td></td><td></td></tr> 
    <tr class="even"><td></td><td></td></tr> 
    <tr class="odd"> <td></td><td></td></tr> 
</table> 

Ich möchte ein paar der Tabellenzellen markieren, aber in einer anderen Art und Weise, wenn die Zelle in einer geraden oder einer ungeraden Zeile, wie Mehrere vertikal gestapelte Zellen könnten hervorgehoben sein, und ich möchte die Änderung der Zeilenfarbe beibehalten. Was ich war zuerst nur kam mit zwei Klassen erstellen, highlight_even und highlight_odd, in meinem Javascript-Code herauszufinden (wie diese Hervorhebung dynamisch erfolgen wird), ob die Zeile even oder odd und setzte class entsprechend, zum Beispiel:

<table> 
    <tr class="even"><td></td><td class="highlight_even"></td></tr> 
    <tr class="odd"> <td></td><td class="highlight_odd"></td></tr> 
    <tr class="even"><td></td><td></td></tr> 
    <tr class="odd"> <td></td><td></td class="highlight_odd"></tr> 
</table> 

Die Farben sind jedoch sehr einfach. Ich möchte highlight_even durch Mischen von Grün in die even Farbe und highlight_odd durch Mischen der gleichen grünen in die odd Farbe machen. Gibt es eine Möglichkeit, dies in CSS zu erreichen, so dass die gleiche hervorgehobene Tabelle einfach so aussehen könnte?

<table> 
    <tr class="even"><td></td><td class="highlight"></td></tr> 
    <tr class="odd"> <td></td><td class="highlight"></td></tr> 
    <tr class="even"><td></td><td></td></tr> 
    <tr class="odd"> <td></td><td></td class="highlight"></tr> 
</table> 

So etwas wie (in Pseudo-Code):

td.highlight { 
    background-color: blend #ff0 into existing background-color; 
} 
+0

Was meinst du mit "Mischung", genau? – BoltClock

+0

Opazität kann helfen, wird aber in alten Browsern nicht sehr gut unterstützt http://www.w3schools.com/cssref/css3_pr_opacity.asp – Miquel

Antwort

2

Warum nicht einfach die Mischung manuell definieren? Sie sollten dafür auch nicht mehrere Klassen highlight_* benötigen. Unter der Annahme, geraden Zeilen sind # ff0 und ungerade Zeilen # f0f und ein einfaches weißes Highlight:

tr.even td.highlight { background: #ff8; } 
tr.odd td.highlight { background: #f8f; } 
+0

Ich lege 'highlight' auf die' td's, nicht auf die 'tr's. – Claudiu

+0

Tut mir leid, ich habe ein '.' vergessen. –

+0

Das sollte die richtige Antwort sein imo –

8

die Hintergrundfarbe des Highlight mit rgba Set.

td.highlight { 
    background-color: #ff0; 
    background-color: rgba(255, 255, 0, 0.5); 
} 

(Wo 0.5 die Opazität ist.)

Oder für eine detailliertere Progressive Enhancement

.odd .highlight{ 
    background-color: /*blend of #ff0 and .odd;*/ 
} 
.even .highlight{ 
    background-color: /*blend of #ff0 and .even;*/ 
} 
.odd .highlight, .even.highlight{ 
    background-color: rgba(255, 255, 0, 0.5); 
} 

Edited Unterstützung für IE8- zu adressieren.

+0

Es ist sinnvoll zu berücksichtigen, dass dies von IE8 und älteren Versionen nicht unterstützt wird.Für sie kann PNG-24 semitransparentes Hintergrundbild verwendet werden. –

+0

@MaratTanalin Guter Punkt. Ich habe bearbeitet, um IE8-Unterstützung zu adressieren. – devstruck

+0

In der granulareren Lösung, die Sie hinzugefügt haben, warum sollten Sie sich sogar mit dem halbdeckenden Material beschäftigen, wenn Sie nur die Mischung für die Mischung im Voraus berechnen wollen? Die erste Option ist wahrscheinlich, wie ich das tatsächlich tun würde, es sei denn, das Management ** möchte wirklich, dass die Highlights in IE <9 gemischt werden. –

0

Sie könnte etwa so versuchen:

td.highlight { 
    background-image: linear-gradient(rgba(255, 0, 0, 1) 0%, rgba(255, 0, 0, 0) 100%); 
} 

Dies nutzt CSS3, so wird es nicht funktionieren in ältere Browser Und Sie werden für jeden Browser Regeln schreiben (dh. background-image: -moz-linear-gradient: ..., etc.)

0

Hallo Sie können ohne definieren verwendete Klasse in Tabelle

jetzt können Sie in tr Farbe definieren gerade oder ungerade Eigenschaften

als ähnliche

<table> 

    <tr><td>This is one</td></tr> 
    <tr><td>This is one</td></tr> 
    <tr><td>This is one</td></tr> 
    <tr><td>This is one</td></tr> 
    <tr><td>This is one</td></tr> 
    <tr><td>This is one</td></tr> 
    <tr><td>This is one</td></tr> 
</table> 

tr:nth-child(odd) {background: red;} 
tr:nth-child(even) {background: green;}` 

und prüfen nun live here

http://jsfiddle.net/n83K5/1/

Verwandte Themen