[gelöst][CSS] Ausnahmen definieren

Cyperfriend

Der ohne Avatar
Registriert
14 Juli 2013
Beiträge
1.123
Ich habe in meiner style.css-Datei für table tr td einen Rahmen definiert. Das funktioniert auch und für fast für alle tabellarischen Inhalte meiner Seite so gewollt. Es gibt aber eine einzige Ausnahme, wo ich keinen Rahmen will, aber egal was ich versuche, ich kann den CSS-Wert nicht überschreiben, auch wenn ich direkt
[src=html4strict]<table style="border:0px solid #FFFFFF; ">[/src] schreibe. Mache ich testhalber aus den 0px einfach 10px wird der Rahmen dicker, aber ich will ja keinen Rahmen. Auch die Angabe "none" hilft mir nicht.

Gibt es eine Möglichkeit eine Ausnahme zu definieren oder muss ich jetzt wirklich den CSS-Code umbenennen in ".rahmen" und das als Kasse in jede Tabelle auf der Seite einfügen, nur damit ich sie bei der einen Tabelle weglassen kann :mad::buh: ?
 
Zuletzt bearbeitet:
Re: [CSS] Ausnahmen definieren

Die Rahmen hast Du ja für die td definiert. In der Tabelle, wo Du dies überschreiben willst, willst Du das jedoch für die Tabelle tun. Die Regel, dass keine Ränder existieren sollen, vererbt sich nicht automatisch auf die tds. Wie wäre denn folgendes Stylesheet:

[src=css]table td {
border: 1px solid #ffffff;
}

table.noborder td {
border: 0;
}[/src]
 
  • Thread Starter Thread Starter
  • #3
Re: [CSS] Ausnahmen definieren

Diese Regel ist super. Habe sie noch leicht modifiziert und jetzt ist das super.
[src=css]table.noborder tr, td {
border: 0;
}[/src]
Danke dir. Wieder ein Punkt weniger auf meiner Liste.

Edit:
Ich stelle gerade fest, dass die Zellenrahmen auch weg gehen, selbst wenn kein noborder definiert wurde.
Genaueres kann dem Bild entnommen werden. Was läuft falsch?
Anhang anzeigen 4555

Außerdem will ich auch den ganz äußeren Rahmen weg haben.
 
Zuletzt bearbeitet:
Re: [CSS] Ausnahmen definieren

Der Selektor `table.noborder tr, td` besteht aus zwei Teil-Selektoren, `table.noborder tr` und `td`. Du möchtest damit allerdings wohl eher `table.noborder tr, table.noborder td` ausdrücken, denn andernfalls gilt die Regel für alle td-Elemente.

Eine weitere Möglichkeit für Ausnahmen in modernen Browsern wäre übrigens die in CSS Selectors Level 3 definierte :not()-Pseudoklasse:
[src=css]table:not(.noborder) td {
border: 1px solid #ffffff;
}[/src]
In solch einem simplen Fall wie deinem ist die zweite Regel, um die Auswirkungen der ersten aufzuheben, allerdings die bessere Lösung, da sie auch in älteren Browsern (welche nur CSS 2.1 implementieren) zur korrekten Darstellung führt.
 
  • Thread Starter Thread Starter
  • #5
Re: [CSS] Ausnahmen definieren

Wie du ja weist nehme ich keine Rücksicht auf veraltete Browser, da das ganze in erster Linie für den internen Einsatz bestimmt ist. Ich plane zwar immer noch die Veröffentlichung, aber ich denke das wird schon noch etwas dauern.

Deine Lösung finde ich (wie ja meistens) ganz toll, aber sie funktioniert nicht so wie sie soll.
Der Original CSS-Table-Code sieht so aus:
[src=css]table, tr, th, td {
border:1px solid #000000;
border-collapse:collapse;
}
[/src]

Mache ich jetzt
[src=css]table:not(.noborder), tr, th, td {
border:1px solid #000000;
border-collapse:collapse;
}
[/src] hat das keine Auswirkungen auf die bestehenden Tabellen, aber die Tabelle mit der Klasse noborder sieht dann so aus:
Anhang anzeigen 4569

Wenn es nicht zu viel verlangt ist: Ich brauche für eine Tabelle auch Code, wo der äußerste Rand komplett weg soll, bzw. halt nur der untere Rand
 
Re: [CSS] Ausnahmen definieren

Kugelfisch hat Dein Problem in seinem ersten Absatz schon erklärt, das gleiche Problem hast Du jetzt wieder:

table:not(.noborder), tr, th, td sind vier CSS-Regeln:
[src=css]table:not(.noborder),
tr,
th,
td[/src]
Jeder durch Komma getrennte Ausdruck ist dabei ein einzelner Selektor. Wenn Du wirklich alle diese Elemente selektieren möchtest, müsstest Du es so machen:
[src=css]table:not(.noborder),
table:not(.noborder) tr,
table:not(.noborder) th,
table:not(.noborder) td[/src]
 
Zurück
Oben