Abgerundete Tabellenecken nur CSS

Lesezeit: 7 Minuten

Abgerundete Tabellenecken nur CSS
Vishal Schah

Ich habe gesucht und gesucht, aber keine Lösung für meine Anforderung gefunden.

Ich habe eine einfache alte HTML-Tabelle. Ich will runde Ecken dafür, ohne mit Bildern oder JS, dh rein Nur CSS. So was:

Tischlayoutskizze

Abgerundete Ecken für Eckzellen und 1px dicker Rand für die Zellen.

Bisher habe ich das:

table {
  -moz-border-radius: 5px !important;
  border-collapse: collapse !important;
  border: none !important;
}
table th,
table td {
  border: none !important
}
table th:first-child {
  -moz-border-radius: 5px 0 0 0 !important;
}
table th:last-child {
  -moz-border-radius: 0 5px 0 0 !important;
}
table tr:last-child td:first-child {
  -moz-border-radius: 0 0 0 5px !important;
}
table tr:last-child td:last-child {
  -moz-border-radius: 0 0 5px 0 !important;
}
table tr:hover td {
  background-color: #ddd !important
}

Aber das lässt mir keine Grenzen für die Zellen. Wenn ich Ränder hinzufüge, werden sie nicht gerundet!

Irgendwelche Lösungen?

  • Haben Sie versucht, den TD-Elementen mit moz-border-radius einen Rand hinzuzufügen? Beachten Sie auch, dass dies in IE nicht funktioniert, IE zeigt immer noch gerade Kanten.

    – Fermin

    8. Februar ’11 um 11:00 Uhr

  • Wenn Sie sich die Antworten und Ihre Kommentare ansehen, ist nicht klar, was Sie wollen: Wo wollen Sie abgerundete Ecken? Tabelle, Tabellenzellen, nur Zellen an den Ecken Ihrer Tabelle?

    – BiAiB

    8. Februar 11 um 11:36 Uhr

  • Ich denke, es ist ziemlich offensichtlich aus dem Fragentitel, Tischecken

    – Vishal Schah

    8. Februar 11 um 11:54 Uhr


  • @VishalShah +1 für eine wirklich nützliche Frage. Ich habe blind eine jQuery-UI-Klasse mit abgerundeten Ecken verwendet, die für die UI-Widgets entwickelt wurde, aber ich habe sie auf Tabellenelemente angewendet und alles wurde quadratisch. Jetzt kann ich also immer noch mein jQuery-UI-Design mit einem tabellenbasierten Widget verwenden.

    – DavidHyogo

    30. September 12 um 13:11 Uhr

1643916130 236 Abgerundete Tabellenecken nur CSS
RoToRa

Scheint in FF und Chrome gut zu funktionieren (habe keine anderen getestet) mit separaten Grenzen: http://jsfiddle.net/7veZQ/3/

Bearbeiten: Hier ist eine relativ saubere Umsetzung Ihrer Skizze:

table {
    border-collapse:separate;
    border:solid black 1px;
    border-radius:6px;
}

td, th {
    border-left:solid black 1px;
    border-top:solid black 1px;
}

th {
    background-color: blue;
    border-top: none;
}

td:first-child, th:first-child {
     border-left: none;
}
<table>
    <thead>
    <tr>
        <th>blah</th>
        <th>fwee</th>
        <th>spoon</th>
    </tr>
    </thead>
    <tr>
        <td>blah</td>
        <td>fwee</td>
        <td>spoon</td>
    </tr>
    <tr>
        <td>blah</td>
        <td>fwee</td>
        <td>spoon</td>
    </tr>
</table>

http://jsfiddle.net/MuZzz/3577/

  • Nicht genau das was ich suche. Wenn Sie die Tabellenpolsterung entfernen und den Randradius nur auf die Eckzellen anwenden, erhalten Sie 2 Pixel dicke Ränder, was hässlich ist. Lieber gar keine Grenzen.

    – Vishal Schah

    8. Februar 11 um 11:27 Uhr


  • Nah dran. Die Eckzellen benötigten auch einen Randradius. jsfiddle.net/JWb4T/1 Jetzt sehen Sie jedoch eine leichte Lücke zwischen den Kanten der Eckzellen und der Tischkante. Kann durch Reduzieren des Randradius für die Eckzellen behoben werden. Danke: D

    – Vishal Schah

    9. Februar 11 um 13:50 Uhr

  • Schön, dass du es geklärt hast. Beachten Sie, dass first-child und last-child funktionieren nicht in IE6/7/8, sind aber für Sie weniger problematisch, da beides nicht der Fall ist border-radius. Es bedeutet, dass Sie CSS3Pie nicht verwenden können, um es in IE zu reparieren – es wird den Randradius reparieren, aber nicht das erste/letzte Kind.

    – Spudley

    9. Februar 11 um 14:49 Uhr

  • Hinzufügen border-collapse: separate; zum Zurb Ink Template hat es für mich gelöst.

    – Johann Dettmar

    16. April 14 um 12:18 Uhr

  • Vielleicht sah das vor 7 Jahren gut aus, aber heute verbinden sich die Zellgrenzen nicht mit dieser Lösung, also sieht es schrecklich aus.

    – rtft

    20. September 18 um 14:53 Uhr

1643916131 579 Abgerundete Tabellenecken nur CSS
Lars Schinkel

Für mich die Twitter Bootstrap-Lösung sieht gut aus. Es schließt IE < 9 aus (keine runden Ecken in IE 8 und niedriger), aber das ist in Ordnung, denke ich, wenn Sie zukünftige Web-Apps entwickeln.

CSS/HTML:

table { 
    border: 1px solid #ddd;
    border-collapse: separate;
    border-left: 0;
    border-radius: 4px;
    border-spacing: 0px;
}
thead {
    display: table-header-group;
    vertical-align: middle;
    border-color: inherit;
    border-collapse: separate;
}
tr {
    display: table-row;
    vertical-align: inherit;
    border-color: inherit;
}
th, td {
    padding: 5px 4px 6px 4px; 
    text-align: left;
    vertical-align: top;
    border-left: 1px solid #ddd;    
}
td {
    border-top: 1px solid #ddd;    
}
thead:first-child tr:first-child th:first-child, tbody:first-child tr:first-child td:first-child {
    border-radius: 4px 0 0 0;
}
thead:last-child tr:last-child th:first-child, tbody:last-child tr:last-child td:first-child {
    border-radius: 0 0 0 4px;
}
<table>
  <thead>
    <tr><th>xxx</th><th>xxx</th><th>xxx</th></tr>
  </thead>
  <tbody>
    <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr>
    <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr>
    <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr>
    <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr>
    <tr><td>xxx</td><td>xxx</td><td>xxx</td></tr>
  </tbody>
</table>

Damit kann man spielen hier (auf jsFiddle)

Die ausgewählte Antwort ist schrecklich. Ich würde dies implementieren, indem ich auf die Ecktabellenzellen abziele und den entsprechenden Randradius anwende.

Um die oberen Ecken zu erhalten, stellen Sie den Randradius auf den ersten und letzten Typ von ein th Elemente, und stellen Sie dann zum Schluss den Randradius auf das letzte und das erste ein td Typ auf dem letzten Typ tr um die unteren Ecken zu bekommen.

th:first-of-type {
  border-top-left-radius: 10px;
}
th:last-of-type {
  border-top-right-radius: 10px;
}
tr:last-of-type td:first-of-type {
  border-bottom-left-radius: 10px;
}
tr:last-of-type td:last-of-type {
  border-bottom-right-radius: 10px;
}

  • Das ist so viel besser als alle anderen Antworten … Das ist erstaunlich einfach und elegant!

    – Eric Côte

    30. November 19 um 20:46 Uhr


  • Froh, dass ich helfen konnte!

    – Lukas Flournoy

    3. Dezember 19 um 16:55 Uhr

  • Das funktioniert wirklich gut, aber ich habe einen anderen Tisch mit th Elemente auf der oberen und linken Seite der Tabelle und dies funktioniert nicht dafür. Wie runde ich die Ecken eines solchen Tisches ab?

    – nenur

    26. Dezember 19 um 14:44 Uhr

  • Dies muss die Top-Antwort sein. Die oberste Antwort funktioniert nicht! Diese Antwort tut es auch Rechts Weg. Danke Lukas!

    – Ashok Channa

    24. Mai 21 um 10:26 Uhr

  • Dies ist die perfekte, einfach zu bedienende Lösung.

    – SARAN SURYA

    10. November 21 um 10:08 Uhr

1643916131 973 Abgerundete Tabellenecken nur CSS
Spudley

Erstens brauchen Sie mehr als nur -moz-border-radius wenn Sie alle Browser unterstützen möchten. Sie sollten alle Varianten angeben, einschließlich Normal border-radiusfolgendermaßen:

-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;

Zweitens, um Ihre Frage direkt zu beantworten, border-radius zeigt nicht wirklich einen Rahmen an; Es legt nur fest, wie die Ecken des Randes aussehen, falls vorhanden.

Um die Umrandung zu drehen und somit deine abgerundeten Ecken zu bekommen, brauchst du auch die border Attribut auf Ihrem td und th Elemente.

td, th {
   border:solid black 1px;
}

Sie werden die abgerundeten Ecken auch sehen, wenn Sie eine Hintergrundfarbe (oder Grafik) haben, obwohl es natürlich eine andere Hintergrundfarbe als das umgebende Element sein müsste, damit die abgerundeten Ecken ohne Rand sichtbar sind.

Es ist erwähnenswert, dass einige ältere Browser das Putten nicht mögen border-radius auf Tabellen/Tabellenzellen. Es kann sich lohnen, a zu setzen <div> in jeder Zelle und stylen Sie stattdessen diese. Dies sollte jedoch keine aktuellen Versionen von Browsern betreffen (außer IE, der abgerundete Ecken überhaupt nicht unterstützt – siehe unten).

Schließlich nicht, dass IE nicht unterstützt border-radius überhaupt (IE9 Beta tut es, aber die meisten IE-Benutzer werden IE8 oder weniger verwenden). Wenn Sie den IE hacken möchten, um Border-Radius zu unterstützen, schauen Sie sich an http://css3pie.com/

[EDIT]

Okay, das hat mich gestört, also habe ich einige Tests durchgeführt.

Hier ist ein JSFiddle-Beispiel, mit dem ich gespielt habe

Es scheint, als ob das Entscheidende, was Sie vermisst haben, war border-collapse:separate; auf dem Tischelement. Dies hindert die Zellen daran, ihre Grenzen miteinander zu verbinden, wodurch sie den Grenzradius aufnehmen können.

Hoffentlich hilft das.

1643916132 224 Abgerundete Tabellenecken nur CSS
Patrick Rodríguez

Die beste Lösung, die ich für abgerundete Ecken und anderes CSS3-Verhalten für IE<9 gefunden habe, finden Sie hier: http://css3pie.com/

Laden Sie das Plug-in herunter und kopieren Sie es in ein Verzeichnis in Ihrer Lösungsstruktur. Stellen Sie dann in Ihrem Stylesheet sicher, dass das Behavior-Tag vorhanden ist, damit es das Plug-In einfügt.

Einfaches Beispiel aus meinem Projekt, das mir abgerundete Ecken, Farbverlauf und Kastenschatten für meinen Tisch gibt:

.table-canvas 
{
    -webkit-border-radius: 8px;
    -moz-border-radius: 8px;
    overflow:hidden;
    border-radius: 10px;
    -pie-background: linear-gradient(#ece9d8, #E5ECD8);   
    box-shadow: #666 0px 2px 3px;
    behavior: url(Include/PIE.htc);
    overflow: hidden;
}

Machen Sie sich keine Sorgen, wenn Ihr CSS-IntelliSense von Visual Studio Ihnen die grüne Unterstreichung für unbekannte Eigenschaften anzeigt, es funktioniert immer noch, wenn Sie es ausführen. Einige der Elemente sind nicht sehr klar dokumentiert, aber die Beispiele sind ziemlich gut, besonders auf der Titelseite.

  • Die CSS-Verhaltenseigenschaft war eine nicht standardmäßige MS-Erweiterung für CSS, und das war sie aus IE10+ entfernt – dh dies funktioniert nicht in modernen Browsern

    – Jan Turoň

    27. Dezember 21 um 10:36 Uhr


1643916132 361 Abgerundete Tabellenecken nur CSS
K.Parker

Es ist ein wenig grob, aber hier ist etwas, das ich zusammengestellt habe, das vollständig aus CSS und HTML besteht.

  • Außenecken abgerundet
  • Kopfzeile
  • Mehrere Datenzeilen

Dieses Beispiel verwendet auch die :hover Pseudoklasse für jede Datenzelle <td>. Elemente können einfach aktualisiert werden, um Ihren Anforderungen gerecht zu werden, und der Hover kann schnell deaktiviert werden.

(Die habe ich aber noch nicht bekommen :hover um für volle Zeilen richtig zu arbeiten <tr>. Die letzte schwebende Zeile wird unten nicht mit abgerundeten Ecken angezeigt. Ich bin sicher, es gibt etwas Einfaches, das übersehen wird.)

table.dltrc {
  width: 95%;
  border-collapse: separate;
  border-spacing: 0px;
  border: solid black 2px;
  border-radius: 8px;
}

tr.dlheader {
  text-align: center;
  font-weight: bold;
  border-left: solid black 1px;
  padding: 2px
}

td.dlheader {
  background: #d9d9d9;
  text-align: center;
  font-weight: bold;
  border-left: solid black 1px;
  border-radius: 0px;
  padding: 2px
}

tr.dlinfo,
td.dlinfo {
  text-align: center;
  border-left: solid black 1px;
  border-top: solid black 1px;
  padding: 2px
}

td.dlinfo:first-child,
td.dlheader:first-child {
  border-left: none;
}

td.dlheader:first-child {
  border-radius: 5px 0 0 0;
}

td.dlheader:last-child {
  border-radius: 0 5px 0 0;
}


/*===== hover effects =====*/


/*tr.hover01:hover,
tr.hover02:hover {
  background-color: #dde6ee;
}*/


/* === ROW HOVER === */


/*tr.hover02:hover:last-child {
  background-color: #dde6ee;
  border-radius: 0 0 6px 6px;
  }*/


/* === CELL HOVER === */

td.hover01:hover {
  background-color: #dde6ee;
}

td.hover02:hover {
  background-color: #dde6ee;
}

td.hover02:first-child {
  border-radius: 0 0 0 6px;
}

td.hover02:last-child {
  border-radius: 0 0 6px 0;
}
<body style="background:white">
  <br>
  <center>
    <table class="dltrc" style="background:none">
      <tbody>
        <tr class="dlheader">
          <td class="dlheader">Subject</td>
          <td class="dlheader">Title</td>
          <td class="dlheader">Format</td>
        </tr>
        <tr class="dlinfo hover01">
          <td class="dlinfo hover01">One</td>
          <td class="dlinfo hover01">Two</td>
          <td class="dlinfo hover01">Three</td>
        </tr>
        <tr class="dlinfo hover01">
          <td class="dlinfo hover01">Four</td>
          <td class="dlinfo hover01">Five</td>
          <td class="dlinfo hover01">Six</td>
        </tr>
        <tr class="dlinfo hover01">
          <td class="dlinfo hover01">Seven</td>
          <td class="dlinfo hover01">Eight</td>
          <td class="dlinfo hover01">Nine</td>
        </tr>
        <tr class="dlinfo2 hover02">
          <td class="dlinfo hover02">Ten</td>
          <td class="dlinfo hover01">Eleven</td>
          <td class="dlinfo hover02">Twelve</td>
        </tr>
      </tbody>
    </table>
  </center>
</body>

  • Die CSS-Verhaltenseigenschaft war eine nicht standardmäßige MS-Erweiterung für CSS, und das war sie aus IE10+ entfernt – dh dies funktioniert nicht in modernen Browsern

    – Jan Turoň

    27. Dezember 21 um 10:36 Uhr


Durch persönliche Erfahrung habe ich festgestellt, dass es nicht möglich ist, Ecken einer HTML-Tabelle abzurunden Zelle mit reinem CSS. Das Abrunden des äußersten Randes einer Tabelle ist möglich.

Sie müssen auf die Verwendung von Bildern zurückgreifen, wie in beschrieben dieses Tutorialoder ähnliches 🙂

  • +1 und das gleiche hier haben kürzlich versucht, dies zu erreichen, aber kein Glück. Musste innen a setzen <div>. ^^,

    – Tomsseis

    8. Februar 11 um 11:09 Uhr

.

759180cookie-checkAbgerundete Tabellenecken nur CSS

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy