Bearbeiten - Originaltitel: Gibt es einen alternativen Weg, um border-collapse:collapse
in zu erreichenCSS
(um einen kollabierte, abgerundete Ecke Tisch zu haben)?
Da sich herausstellt, dass das Reduzieren der Tabellenränder das Grundproblem nicht löst, habe ich den Titel aktualisiert, um die Diskussion besser widerzuspiegeln.
Ich versuche mit der CSS3
border-radius
Eigenschaft einen Tisch mit abgerundeten Ecken zu machen . Die von mir verwendeten Tabellenstile sehen ungefähr so aus:
table {
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px
}
Hier ist das Problem. Ich möchte auch die border-collapse:collapse
Eigenschaft festlegen , und wenn dies festgelegt ist, border-radius
funktioniert es nicht mehr. Gibt es eine CSS-basierte Methode, mit der ich den gleichen Effekt erzielen kann, border-collapse:collapse
ohne ihn tatsächlich zu verwenden?
Bearbeitungen:
Ich habe eine einfache Seite erstellt, um das Problem hier zu demonstrieren (nur Firefox / Safari).
Es scheint, dass ein großer Teil des Problems darin besteht, dass das Einstellen der Tabelle auf abgerundete Ecken die Ecken der Eckelemente nicht beeinflusst td
. Wenn die Tabelle nur eine Farbe hätte, wäre dies kein Problem, da ich nur die oberen und unteren td
Ecken für die erste bzw. letzte Reihe abrunden könnte. Ich verwende jedoch unterschiedliche Hintergrundfarben für die Tabelle, um die Überschriften und Streifen zu unterscheiden, sodass die inneren td
Elemente auch ihre abgerundeten Ecken zeigen.
Zusammenfassung der vorgeschlagenen Lösungen:
Das Umgeben des Tisches mit einem anderen Element mit runden Ecken funktioniert nicht, da die quadratischen Ecken des Tisches "durchbluten".
Wenn Sie die Rahmenbreite auf 0 setzen, wird die Tabelle nicht reduziert.
Die unteren td
Ecken sind nach dem Setzen des Zellenabstands auf Null immer noch quadratisch.
Die Verwendung von JavaScript vermeidet das Problem.
Mögliche Lösungen:
Die Tabellen werden in PHP generiert, daher könnte ich einfach eine andere Klasse auf jedes der äußeren th / tds anwenden und jede Ecke separat formatieren. Ich würde das lieber nicht tun, da es nicht sehr elegant und ein bisschen mühsam ist, es auf mehrere Tabellen anzuwenden. Bitte kommen Sie immer wieder auf Vorschläge.
Mögliche Lösung 2 besteht darin, JavaScript (speziell jQuery) zum Stylen der Ecken zu verwenden. Diese Lösung funktioniert auch, aber immer noch nicht ganz das, wonach ich suche (ich weiß, dass ich wählerisch bin). Ich habe zwei Vorbehalte:
- Dies ist eine sehr leichte Website, und ich möchte JavaScript auf ein Minimum beschränken
- Ein Teil der Anziehungskraft, die die Verwendung des Randradius für mich hat, ist eine anmutige Verschlechterung und fortschreitende Verbesserung. Durch die Verwendung des Rahmenradius für alle abgerundeten Ecken hoffe ich, in CSS3-fähigen Browsern eine konsistent gerundete Site und in anderen eine konsistent quadratische Site zu haben (ich sehe Sie an, IE).
Ich weiß, dass der Versuch, dies heute mit CSS3 zu tun, unnötig erscheint, aber ich habe meine Gründe. Ich möchte auch darauf hinweisen, dass dieses Problem auf die w3c-Spezifikation zurückzuführen ist und nicht auf eine schlechte CSS3-Unterstützung. Daher ist jede Lösung weiterhin relevant und nützlich, wenn CSS3 eine breitere Unterstützung bietet.