CSS3 und abgerundete Ecken

Abgerundete Ecken sind ein beliebtes Mittel um das Layout einer Website aufzupeppen. Um abgerundete Ecken zu erreichen gibt es mehrere Ansätze: per Javascript, mit verschachtelten div-Blöcken und Grafiken oder mit Hilfe von CSS3.

Im folgenden werde ich mich der Lösung mit CSS3 widmen. Bei dieser Lösung bleiben ältere Versionen vom Internet Explorer außen vor. Seit der Version 9 des Internet Explorers (IE) beherrscht auch dieser Browser abgerundete Ecken, die per CSS3 realisiert werden.

Das die älteren IE-Versionen außen vor bleiben ist in meinen Augen nicht schlimm. Zum einen sind abgerundete Ecken Layout-Elemente, es werden also nicht wichtige Teile des Inhalts ausgeblendet bzw. vor dem IE versteckt. Zum anderen ist der IE <9 auf thematischen Weblogs, wie dieses hier ist, in der absoluten Minderheit. Alle IE-Versionen zusammen erreichen in diesem Weblog keine 10%. Davon entfällt knapp 2/3 auf Internet Explorer 9 und höher. Daher sehe ich es nicht ein, für den IE in diesem Zusammenhang irgendwelche Hacks, Javascript-Spirenzchen oder Grafik-Geschnetzeltes zu machen. Das frisst Zeit und Performance, die man besser anderswo investiert. Aber zurück zum Thema: abgerundete Ecken und CSS3.

border-radius und die Browser

Foortgeschrittene CSS-Techniken
CSS-Buch

In CSS3 existiert die Eigenschaft border-radius. Da aber die Spezifikationen noch lediglich als Arbeitsentwurf (Working draft) existieren, also noch nicht veröffentlicht wurden, wird zur Zeit border-radius nicht von allen Browsern unterstützt.

Von den modernen Browsern unterstützen Opera, Google Chrome, Internet Explorer ab Version 9 und Mozilla Firefox und andere Browser, die auf die aktuelle Gecko-Version setzen, wie zum Beispiel SeaMonkey. Lediglich bei Safari muss man sich noch mit dem Vendor-Präfix -webkit-border-radius behelfen.

Einfache Abrundungen

Starten wir zum Aufwärmen mit einem einfachen Beispiel:

Bla

Hier der dazugehörige Code:

.abrundung {
    border: 1px solid #8b4513;
    -webkit-border-radius: 7px;
    border-radius: 7px;
    background: #eee8aa;
    padding: 2em;
}

Wie gesagt, es handelt sich hier bei um ein einfaches Beispiel, wo die Abrundungen der Ecken einen Radius von sieben Pixel haben.

Unterschiedliche Abrundungen in der Box

Wem der obere Beispiel langweilig ist, der kann einzelnen Ecken auch unterschiedliche Abrundungen spendieren:

Bla

Und hier folgt der Code:

.abrundung {
    border: 1px solid #8b4513;
    -webkit-border-radius: 5px 59px;
    border-radius: 5px 59px;
    background: #eee8aa;
    padding: 2em;
}

In diesem Beispiel habe ich den Ecken oben Links und unten Rechts einen Radius von fünf Pixel und den anderen beiden Ecken einen Radius von 59 Pixel spendiert. Man kann auch jeder einzelnen Ecke einen speziellen Radius verpassen: border-radius: 5px 59px 3px 99px; (oben Links, oben Rechts, unten Rechts und unten Links).

Abrundungen variieren

Wem das alles immer noch nicht ausreicht, der kann den Radius einer einzelner Abrundung horizontal und/oder vertikal variieren. Hier ein Beispiel:

Bla

Hier der dazugehörige Code:

.abrundung {
    border: 1px solid #8b4513;
    -webkit-border-top-left-radius: 55px 15px;
    border-top-left-radius: 55px 15px;
    background: #eee8aa;
    padding: 2em;
}

An diesem recht einfachen Beispiel erkennt man mehre Sache. Zum einen das man den Radius der gleichen Ecke varriieren kann, wobei der erste Wert den horizontalen und der zweite Wert den vertikalen Radius bestimmt.

Man kann die einzelnen Ecken explizit ansprechen schauen wir uns mal die Eigenschaften im Uhrzeigersinn mal an:

Oben Links

-webkit-border-top-left-radius: 9px;
border-top-left-radius: 9px;

Oben Rechts

-webkit-border-top-right-radius: 7px;
border-top-right-radius: 7px;

Unten Rechts

-webkit-border-bottom-right-radius: 5px;
border-bottom-right-radius: 5px;

Unten Links

-webkit-border-bottom-left-radius: 3px;
border-bottom-left-radius: 3px;

Soweit alles verstanden?

Abrundungen ohne Rahmen

Was ich persönlich als sehr gut empfinde ist die Tatsache, dass man Abrundungen einer Box erreichen kann auch ohne Angaben zum Rahmen zu machen. Hier ein Beispiel:

Bla

Hier der Code zum oberen Beispiel:

.abrundung {
    -webkit-border-radius: 5px 59px;
    border-radius: 5px 59px;
    background: #eee8aa;
    padding: 2em;
}

Ich finde die Möglichkeit Abrundungen auch ohne Rahmen-Angaben zu realisieren, weil speziell bei einem größeren Radius die Rahmen imho schlechter rendern (“ausgefranst”) als der abgerundete Hintergrund.

Abrundungen mit Hintergrundbild

Ja, man kann auch Hintergrundbilder abrunden:

 

Und wie gehabt der Code:

.abrundung {
    -webkit-border-radius: 10px;
    border-radius: 10px;
    background: url(bild.jpg);
    height: 170px;
}

Generatoren

Wem das zu mühselig ist, sich die ganzen einzelnen Eigenschaften zu merken, der kann auf eine Reihe von CSS3- bzw. Rahmen-Generatoren zurückgreifen. Hier zwei davon:

  • CSS3-Generator: neben den abgerundeten Ecken generiert die Webanwendung auch Box- und Textschatten.
  • Border-Radius.com: generiert den Code für abgerundete Ecken, auch für Webkit- und Gecko-Browser.

Wir arbeiten seit 20 Jahren mit WordPress und bieten diverse Dienst­leistungen rund um das System an. Kontaktiere uns für weitere Informationen oder für ein Angebot.

Verwandte Beiträge:

27 Kommentare

  1. Und schon hatte ich mich erschrocken, weil ich mir die Webseite mit dem IE8 angesehen hatte. Schöner Artikel 😉

  2. Besonders für Hintergründe (letztes Bsp) finde ich das ne klasse Sache. Nur die fehlende Unterstützung im IE ist natülich doof…

  3. Eine sehr schöne Übersicht der aktuellen Möglichkeiten.
    Besonders gefällt mir der Abschnitt “Abrundungen variieren” mit den Beispielen zu den verschiedenen Browsern.

    Grüße vom Bodensee
    Wolfgang

  4. Wem zu mühsellig ist, sich die ganzen einzelnen Eigenschaften zu merken, der kann auf eine Reihe von CSS3- bzw. Rahmen-Generatoren zurückgreifen. Hier zwei davon:

    oder Turbine – macht es ebenso leichter und trotzdem ohne online-Tool; passte ja zu einem der letzten Artikel

  5. Google Chrome und Chromium benötigen nicht mehr -webkit-border-radius. Die unterstützen auch das “offizielle”

    1. @Pascal,

      Google Chrome und Chromium benötigen nicht mehr -webkit-border-radius. Die unterstützen auch das “offizielle”

      das weiß ich, deswegen steht auch folgendes im Artikel:

      […] wird zur Zeit border-radius afaik nur von Opera seit der Version 10.6 und von Google Chrome unterstützt.

  6. Sorry, hatte den Absatz übersehen und nur

    -webkit-border-radius für alle Webkit-Browser (Safari, Google Chrome, Chromium) zum Einsatz.

    gelesen

  7. Also bei allen Tests, die ich verzapft hab, kann Safari auch mit border-radius umgehen. Einzig box-shadow benötigt noch ein »-webkit-«.

  8. Schade, dass es bestimmt noch einige Zeit dauern wird, bis es sich als Standard durchgesetzt hat.

  9. Hi Vladimir,

    das klingt alles super! Leider habe ich absolut keine Ahnung von CSS und weiß demensprechend nicht, wo ich den CSS Code den du oben geposted hast einbauen muss. Ich habe hier mal einen Screenshot gemacht, die rot markierten Bereiche möchte ich auf jedenfall abrunden, die grünen evtl., mal schauen.

    Wäre schön wenn du mir helfen kannst 🙂

    Gruß jimmy

    Screenshot: http://d.pr/soTO

  10. Im IE 9 werden die abgerundeten Ecken angezeigt. Opera und Firefox machen auch keine Probleme. Aber man sollte auch runde Ecken vermeiden, da eine Webseite schnell verspielt aussieht.

  11. @Hans: meine Seite ist doch nicht verspielt! Das muss so! 😀
    Der FF4 kennt auch schon “border-radius” und bewertet es sogar stärker als die “-moz-“-Variante. Hab ich grad gemerkt, also meine Seite in FF 3.6 und 4 unterschiedlich aussah. 😉

  12. Toller Artikel, der mir sehr geholfen hat.

    Da ich aber in der Sidebar (für die ich die Rahmen gerne verwenden würde) unterschiedlich hohe Kästen habe, hätte ich gerne gewusst, ob man auch angeben kann, dass die Höhe variabel ist, sich also dem Text anpasst.

    Grüße

  13. […] einfaches, aber dennoch einen sehr ansehnlichen Button stylen kann. Dabei wird unter anderem auf abgerundete Ecken, Box-Schatten und Transitionen […]

Kommentare sind geschlossen.