“Runde Ecken” und Schlagschatten mit CSS3

Langsam aber doch wächst die Unterstützung für die neuen Features, die CSS3 bringen wird. Immer mehr Browser unterstützen in ihrer aktuellsten Version einige Teile der CSS3-Spezifikation, die noch nicht vom W3C abgesegnet wurde.

Browserspezifische Erweiterungen

Die Hersteller können browserspezifische Erweiterungen vornehmen, indem sie die Eigenschaften mit einem Präfix versehen. Die folgende Tabelle zeigt die Präfixe der gängigen Browser:

Präfix Browser Beispiel
-khtml- Konqueror -khtml-border-radius
-moz- Gecko-basierte Browser, z.B. Firefox -moz-box-shadow
-ms- Internet Explorer -ms-filter
-o- Opera -o-background-size
-webkit- Webkit-basierte Browser, z.B. Google Chrome oder Safari -webkit-border-radius

Browser müssen CSS-Eigenschaften, die sie nicht verstehen, ignorieren. Viele Hersteller verwenden deshalb Präfixe, um einen Teil der CSS3-Features schon jetzt zu unterstützen.

“Runde Ecken”

Mit CSS3 können “runde Ecken” realisiert werden, ohne das HTML-Markup zu beeinflussen. Die dafür notwendige Eigenschaft heißt border-radius. Unterstützt wird diese Eigenschaft bisher von Firefox (-moz-border-radius), Webkit-basierten Browsern wie Google Chrome oder Safari (-webkit-border-radius) und Konqueror (-khtml-border-radius).

Ein Element kann so ganz einfach mit runden Ecken versehen werden:

#myBox {
    -webkit-border-radius: 10px;
    -khtml-border-radius: 10px;
    -moz-border-radius: 10px;
    border-radius: 10px;
}

Um nur eine der Ecken abzurunden, definiert CSS3 die Eigenschaften border-top-left-radius, border-top-right-radius, border-bottom-right-radius und border-bottom-left-radius. Firefox schert an dieser Stelle aus: -moz-border-radius-topleft, -moz-border-radius-topright, -moz-border-radius-bottomright und -moz-border-radius-bottomleft.

#myBox {
    -webkit-border-top-left-radius: 10px;
    -webkit-border-top-right-radius: 10px;
    -khtml-border-top-left-radius: 10px;
    -khtml-border-top-right-radius: 10px;
    -moz-border-radius-topleft: 10px;
    -moz-border-radius-topright: 10px;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
}

Schlagschatten

Mit CSS3 kann eine Box mit Schlagschatten versehen werden. Dafür gibt es die Eigenschaft box-shadow:

#myBox {
    -webkit-box-shadow: 10px 10px 5px #cefa42;
    -moz-box-shadow: 10px 10px 5px #cefa42;
    box-shadow: 10px 10px 5px #cefa42;
}

Diese CSS-Eigenschaft benötigt 4 Angaben:

  • Die ersten zwei Angaben bestimmen den horizontalen und vertikalen Offset des Schlagschattens. Positive Werte bedeuten, dass der Schatten rechts oder oben der Boxen positioniert wird, negative Werte positionieren den Schatten links bzw. unter der Box.
  • Die dritte Angaben definiert, wie scharf der Schatten dargestellt werden soll. Je höher der Wert, desto verschwommer stellt der Browser den Schatten dar. Negative Werte sind an dieser Stelle nicht erlaubt.
  • Der letzte Parameter gibt die Farbe des Schattens an.

Und was ist mit dem IE?

Der Internet Explorer unterstützt selbst in der Version 8 keine der oben genannten CSS3-Features. Auch die aktuelle Version von Opera bietet keine Unterstützung für diese Effekte.

Wenn man damit leben kann, dass Benutzer fortschrittlicher Browser ein schöneres Layout sehen als die Benutzer des Internet Explorers oder des Opera-Browsers, kann man die oben genannten CSS3-Features ohne Probleme nutzen. Will man Boxen mit Schlagschatten haben und darf der Schatten ruhig eine scharfe Begrenzung haben, kann man eine Microsoft-proprietären Filter einsetzen:

#myBox {
    -ms-filter:"progid:DXImageTransform.Microsoft.DropShadow(color=#333333, offx=2, offy=2)";
    filter:progid:DXImageTransform.Microsoft.DropShadow(color=#333333, offx=2, offy=2);
}

Internet Explorer-Versionen vor 8 verstehen nur die untere Zeile. Ab IE 8 sollte der Filter mit dem herstellerspezifischen Präfix versehen werden. Dann muss der Wert in Anführungszeichen stehen.

Hier gibt’s ein Beispiel für diese Technik.

Die Box sieht in Firefox 3.5.2 so aus:

box in firefox 3.5

Und so sieht die gleiche Box im Internet Explorer 8 aus:

box in ie 8

Wenn auch das keine Option ist, bleiben nur mehr die konventiellen Methoden für “runde Ecken” und Schlagschatten.


Kick It auf dotnet-kicks.de
Dieser Eintrag wurde veröffentlicht in JavaScript & HTML und getagged , . Bookmarken: Permanent-Link. Kommentieren oder ein Trackback hinterlassen: Trackback-URL.
  • Pingback: Browser Opera 10 ist veröffentlicht | Webseiten-Infos.de

  • http://www.webseiten-infos.de Dieter

    Guter Artikel. Den Microsoft-proprietären Filter für Schlagschatten kannte ich noch nicht. Danke!

    Zur Info: Der heute erschienene Opera 10 kennt leider immer noch kein border-radius und box-shadow.

  • http://www.davidhellmann.com David

    schon traurig das der IE8 das immer noch nicht kann…

  • http://www.tools-seo.de Matze

    Cool, das mit dem Schatten wusste ich auch noch nicht. Hab übrigens aus Gewohnheit 4 Parameter mit px-Angaben eingegeben. Über den vierten Parameter kann man noch die Größe des Schattens einstellen.

  • Pingback: Runde Ecken für Google Chrome 4 | Webseiten-Infos.de

  • http://www.webseiten-infos.de Dieter

    Gute Nachricht: Opera 10.5 ist heute erschienen und der kann versteht nun border-radius und box-shadow und das sogar ohne browserspezifisches Präfix.

  • Pingback: Opera 10.5 mit runden Ecken und Schatteneffekt | Webseiten-Infos.de

  • http://www.tohatec.de Stefan

    Schöner Artikel, danke dafür!
    Es ist einfach sehr schade, dass die Browserentwicklung so uneinheitlich ist. Für mich als Webdesigner ist es sehr aufwändig, immer die Altlasten des IE mit sich rumzutragen (und rumzuärgern).
    Für alle, die mit mir leiden: Vor Kurzem habe ich gelesen, dass die neue IE Version 9 eine sehr vorbildliche CSS3 Unterstützung bieten soll.
    Viele Grüße, Stefan

  • http://www.filuma.de Filuma

    Herzlichen Dank für Ihre Hinweise und vor allem, dass Sie den Code öffentlich zur Verfügung stellen. Hiermit konnte mir bei einem großen Problem zur Webdarstellung geholfen werden. Ach ja, lt. Microsoft ist die entsprechende Darstellung beim IE 9 möglich. Nur mit der Einschränkung, dass IE 9 nur für Vista und Windows 7 verfügbar ist. Aber wir wollen die Hoffnung nicht aufgeben!

  • http://matths.de Matthias Hennig

    Danke für die Hinweise werd wohl öfter zurück kommen um sie nochmal nachzuslesen ^^

    Ich wollte nur anmerken, dass der Opera in der nun aktuellen Version (ich benutze 10.51) die oben genannten Funktionen über die Optionen border-radius: ; und box-shaddow: ; unterstützt.

    MfG Matthias Hennig

  • http://www.mxworker.com MXWorker

    Super Seite. Ich habe sie mir direkt zu meinen Favoriten gelegt. Jedes Mal wenn ich runde Ecken brauche komme ich hierher.

    Salu2 MXWorker

  • monkey_ffm

    Kurz und sachlich. Vielen Dank dafür :)

  • Ralf

    Danke für die Infos,
    das mit dem IE 8 auch ne Schattenbildung geht wußte ich bisher nicht.
    Werde mir das umständliche anpassen aber dazu sparen. Habe nur gerade kurz den -ms-filter: angetestet, aber damit bekommt alles in dem Layer nen Schatten ^^

    @Stefan
    ja der IE 9 soll die css3 Regeln interpretieren, allerdings wird “unsere” Leidenszeit mit dem IE noch länger anhalten, da der IE 9 wohl nicht für XP User verfügbar sein wird…. ;(

  • http://www.creagreen.de/ Sascha Franke

    Ist zwar ne feine Sache mit den Rundungen und dem Schatten per CSS. Aber da es noch genügend User gibt die mit IE7, ja sogar noch IE6 unterwegs sind wird man wohl weiterhin nicht drumrum kommen mit Bildern zu arbeiten um die gewünschten Effekte realisieren zu können.
    Schade dass diese Entwicklungen so viele Jahre benötigen. Selbst wenn wir in 2 Jahren vom IE6 weg sind (der leider oft noch den genauen Prozentsatz wie Operor und Safari ausmacht), steht trotzdem noch immer der IE7 und der IE8 im Weg.
    Ich werde weiterhin noch auf Bilder setzen um ein Browserübergreifendes Layout herstellen zu können.

    Trotzdem super Artikel *daumenhoch*

  • CSS ist toll!

    Schaut mal mit aktuellem Firefox oder Chrome auf diesen Blog, da sieht man in praktischer Anwendung, was alles möglich ist. Runde Ecken, Transparenzeffekte, Farbverläufe, Schatten, CSS3-Buttons. Eine wahre Freude!

  • R.

    Ich kann das Bashing nicht verstehen. Solange es keinen verabschiedeten Standard gibt – und der wird nun mal nicht von Google oder Mozilla vorgegeben – sind diesbezüglich Disukussionen, was umgesetzt werden sollte, hinfällig.

  • Jlkjhkjshgg

    Why doesn´t this work in Firefox 4.0.1 (latest) ???

  • Hoschi Hanser

    nichtmal im explorer 9 können runde ecken dargestellt werden..wie peinlich für microsoft.wann soll das denn kommen? im explorer 15 oder wie?

  • Anonymous

    Den Artikel habe ich im August 2009 geschrieben. Seit damals hat sich die Situation bezüglich IE ein wenig geändert: der IE 9 unterstützt sowohl “border-radius” als auch “box-shadow”. Für IE 8 muss man sich trotzdem etwas anderes überlegen.

  • Anonymous

    What exactly does not work in Firefox 4.0.1?

  • Hoschi Hanser

    warum kann Firefox,Opera ,Chrome usw auf dieser Seite runde ecken generieren und IE 9 nicht?
    https://www.aget24.de

    Danke für Info..

  • DaBigGreenThing

    Schlampig programmiert. Vermutlich wurden die Ecken mit den Prefixes -moz, -webkit, usw. programmiert, die der IE nicht kennt… Dann funktionieren sie in allen Browsern außer IE9.

  • Paul

    wie/wo kann ich denn #myBox definieren?