Suche nach als

CSS 3 Fancy

Auf dieser Seite:

Mit CSS 3 können nun fancy Style-Effekte mit wenig Code erzielt werden. Die brauchbarsten sind runde Ecken, Rahmen-Bilder, Schatten und Transparenz.

Proprietäre Prefixe

Einige dieser CSS Level 3 Vorschläge sind im Februar 2011 vom W3C zu 'Candidate Recommendation' erklährt worden. Sie sind also ziemlich sicher, dass das so verabschiedet werden wird, aber der Standard ist noch nicht gültig.
Vorläufig haben die unterschiedlichen Browseranbieter den Style-Anweisungen ihre spezifischen Prefixes vorangestellt (oder nachträglich bereits wieder entfernt).
Wenn ein Browser auf unbekannte Deklarationen trifft, ignoriert er sie einfach, kennt er sie, setzt er sie um. Es ist demnach ein guter Tipp, die zukünftig angestrebte W3C Norm ohne Prefixes den proprietären Anweisungen folgen zu lassen.

-moz-
FireFox von Mozilla
-webkit-
Google Chrome und Safari
-khtml-
Konqueror
-o-
Opera
-ms-
Microsoft Internet Explorer
W3C ohne Prefix

Default Style für den Container, auf welchen einige Deklarationen im Folgenden angewendet werden:


/* default Style für einige Container */
.demobox { 
  width: 250px; height: 125px; padding: 10px; background-color: #ccff99; 
  float: left; margin-right: 30px; margin-bottom: 50px;
}

Abgerundete Ecken

border-radius

Die abgerundeten Ecken werden von fast allen Browsern, ausser FF, sogar schon ohne proprietären Prefix umgesetzt.
Wenn alle vier Ecken gleich sein sollen, genügt eine einfache Angabe: border-radius:10px;

Box Nr. 01:
Dieser Container sollte 4 abgerundete Ecken haben.
border-radius:10px;
Box Nr. 02:
Dieser Container sollte oben links und unten rechts abgerundete Ecken haben.
Der Radius ist mit 100px jedoch zu gross, 30px wären ok.
Box Nr. 03:
Dieser Container sollte oben rechts und unten links abgerundete Ecken haben, aber keinen Rahmen.

Wenn die Ecken einzeln angesprochen werden sollen, hat moz eine Extrawurst. Die anbieterspezifischen Deklarationen sind:

w3c: border-top-left-radius, -moz-border-radius-topleft

#nr-01 {
/* proprietäre */
  -moz-border-radius:10px;
  -webkit-border-radius:10px;
  -khtml-border-radius:10px;
  
/* W3C CSS 3 */
  border-radius:10px;
  
/* W3C CSS 2.1 */
  border: 2px solid #669900;
}
#nr-02 {
/* mozilla deklariert die einzelnen Ecken in einem Wort am Ende */
  -moz-border-radius-topleft:30px;
  -moz-border-radius-bottomright:100px;
  
/* webkit schiebt die einzelnen Ecken dazwischen */
  -webkit-border-top-left-radius:100px;
  -webkit-border-bottom-right-radius:100px;
  
/* W3C CSS 3  schiebt die einzelnen Ecken dazwischen*/
  border-top-left-radius:30px;
  border-bottom-right-radius:100px;
  
/* W3C CSS 2.1 */
  border: 1px solid #669900;
}
#nr-03 {
  -moz-border-radius-topright:40px;
  -moz-border-radius-bottomleft:40px;
  
/* W3C CSS 3 */
  border-top-right-radius:40px;
  border-bottom-left-radius:40px;
}

Elliptische Ecken

Es sind auch 2 Angaben je Ecke möglich, durch zwei Radien werden die Rundungen Elliptisch.

Box Nr. 33:
Dieser Container sollte elliptisch abgerundete Ecken haben, oben breitere und unten höhere.
Box Nr. 333:
Unterschiedliche Radien treffen auf unterschiedliche Rahmenstärken!

Die Anweisungen im CSS:

#nr-33 {
/* mozilla */
  -moz-border-radius-topleft:80px 40px;
  -moz-border-radius-topright:80px 40px;
  -moz-border-radius-bottomleft:40px 80px;
  -moz-border-radius-bottomright:40px 80px;
/* W3C CSS 3 */
  border-top-left-radius:80px 40px;
  border-top-right-radius:80px 40px;
  border-bottom-left-radius:40px 80px;
  border-bottom-right-radius:40px 80px;
}
#nr-333 {
/* mozilla */
  -moz-border-radius-topleft:40px 100px;
  -moz-border-radius-topright:100px 100px;
  -moz-border-radius-bottomleft:100px 100px;
  -moz-border-radius-bottomright:40px 100px;
/* W3C CSS 3 */
  border-top-left-radius:40px 100px;
  border-top-right-radius:100px 100px;
  border-bottom-left-radius:100px 100px;
  border-bottom-right-radius:40px 100px;
  
  border: solid #669900;
  /*Rahmenstärke im Uhrzeigersinn startet oben*/
  border-width: 2px 20px 40px 20px;
}

Box Schatten

Boxschatten sind nicht auf div-Container beschränkt, auch Bilder können Schatten werfen, ohne, dass sie in einer Box stecken und auch andere blockbildende Elemente wie z.B. Titel. Die Anweisung box-shadow kennt der IE9 ohne Prefix, der FF benötigt noch -moz- davor.
Die anzugebenden Werte zum Boxschatten werden durch Leerschläge getrennt in folgender Reihenfolge angegeben:

  1. Horizontaler Versatz (seitlich, eine negative Zahl wirft den Schatten nach links)
  2. Vertikaler Versatz (eine negative Zahl wirft den Schatten nach oben)
  3. Unschärfe (optional, ohne Angabe wird der Schatten nicht unscharf (eher wie ein harter Rahmen), je höher die Zahl desto weicher der Schatten)
  4. Grösse des Schattens um Anzahl Pixel (optionaler Parameter, wird hier weggelassen, eine negative Zahl verkleinert ihn)
  5. Farbe (optional, die Farbe kann auch als rgba-Wert angegeben werden, das a steht für den Alphakanal und bestimmt die Transparenz)
  6. Inset zum Schluss der Deklaration (optional, durch die Angabe von 'inset' wird der Schatten in die Box, statt hinter die Box geworfen.)

Es können mehrere Schatten angegeben werden, die sich dann im Unschärfebereich farblich mischen, jeder Schatten wird durch ein Komma abfetrennt, der erste Schatten liegt zuoberst.
Ein nachfolgendes Element kommt über den Schatten eines vorherigen Elements zu liegen, es wirft auch seinen eigenen Schatten auf das vorherige Element.

Box-Schatten

Wasserlilien

Kreis

Multi Box-Schatten inset

Hard multi Box-Schatten

Kreis
Schalter

box-shadow

<style type="text/css"> 
/* Box mit Schatten */
#nr-05 { 
  -moz-box-shadow: 12px 10px 12px -8px #999999;
}
/* Bild mit Schatten */
#nr-55 {
  -moz-box-shadow: 12px 10px 12px -8px Gray;
  width: 250px; height: 145px;
}
/* Kreis mit 3 Farbschatten */
#nr-555 { 
  width: 80px; height: 80px;
  background-color: white;
  text-align: center;
  -moz-border-radius:60px;
  -moz-box-shadow:-30px 20px 30px Yellow, 30px 20px 30px Blue, 0px -30px 30px Red;
}
/* Box mit Multifarbschatten nach innen */
#nr-06 {
  background-color: white;
  -moz-box-shadow:inset 30px 30px 20px plum, inset 60px -30px 20px orange, inset -30px -50px 20px yellowgreen;
}
/* Box mit Multifarbschatten hardedge */
#nr-07 {
  background-color: white;
  border: 1px solid #999999;
  -moz-border-radius-bottomright:60px;
  -moz-border-radius-bottomleft:60px;
  -moz-box-shadow:100px 20px Palegreen, 70px 20px red, 50px 20px #999999, 30px 20px white, 10px 20px Orange;
}
/* Kreis abgehoben */
#nr-77 {
  width: 80px; height: 80px;
  background-color: white;
  text-align: center;
  -moz-border-radius:60px;
  -moz-box-shadow:-15px 20px 30px Olive;
/* zentriert: */
/*  -moz-box-shadow:0px 0px 30px Olive; */
}
/* Schalter */
#nr-7777 {
  width: 80px; height: 40px;
  background-color: white;
  text-align: center;
  -moz-border-radius:15px;
  -moz-box-shadow: inset 0px 0px 20px darkgrey;
}
</style>

In den Schatten gestellt

Möglicherweise sind die Browser der Zukunft 3D-Rendermaschinen oder gar Hologrammgeneratoren.
Immerhin ist es bereits jetzt möglich, durch runde Ecken aus einem Quadrat einen Kreis zu machen.

Text Schatten

Den Textschatten gab's schon einmal in CSS 2, und im FF funktioniert er schon gut, ohne proprietäres Prefix -moz-; - im IEs 9 gibt es noch immer keinen text-shadow. Weil es sich hier um Text handelt, empfiehlt es sich statt Pixel die Masseinheit em zu verwenden.

  1. Horizontaler Versatz, em in Dezimalstellen nach dem Komma (eine negative Zahl wirft den Schatten nach links)
  2. Vertikaler Versatz (eine negative Zahl wirft den Schatten nach oben)
  3. Unschärfe (ohne Angabe wird der Schatten nicht unscharf, je höher die Zahl desto weicher der Schatten)
  4. Grösse des Schattens um Anzahl Pixel, optionaler Parameter (wird hier weggelassen, eine negative Zahl verkleinert ihn)
  5. Farbe zum Schluss oder am Anfang der Deklaration (die Farbe kann auch als rgba-Wert angegeben werden, das a steht für den Alphakanal und betsimmt die Transparenz)

Text-Schatten

Text-Schatten

Schnee-Kappen

Transparenz-Schatten

text-shadow

<style type="text/css">
#nr-04 h1 {
  text-shadow: .08em .12em .1em #66cc33;
  font-size:30px;
}
#nr-44 h1 {
  text-shadow: 0em 0.8em 1.5em darkblue;
  font-size:30px;
}
#nr-444 h1 {
  text-shadow: 0em -0.15em 0em white;
  font-size:30px;
}
#nr-4444 h1 {
  text-shadow: 3px 3px 6px rgba(0,0,0,0.3);
  font-size:30px;
}
</style>

Rahmen-Bilder

Ein Rand um ein Loch

Mir pesönlich haben ja als Kind die Risskanten an den Schatzkarten gut gefallen, vor allem wenn sie noch leichte Brandspuhren aufwiesen! Spezielle Ränder (Box-Kanten) nun als Rahmen machbar - durch ein Bilder im Rahmen. (Leider spielt IE9 auch da noch nicht mit.)

Pergamentrahmen für Textbox
Pic
Bilderrahmen auch für Textbox
Das Rahmenbild braucht nicht die exakte Grösse der Box, nicht einmal ähnliche Proportionen wie die Border zu haben, bloss ein Loch in der Mitte. Zur Anpassung des Rahmen-Bildes stehen stretch, round und repeat zur Verfügung.
Ohne Loch in der Mitte, wäre der 'Rahmen' einfach wie ein Hintergrundbild, welches sich der Box anpasst.
HTML:
<div class="demobox" id="nr-111">
  Pergamentrahmen für Textbox
</div>
Das Bild:
<img src="images/bild_03.jpg" class="demobox" id="nr-10" />

border-image

stretch, round, repeat

CSS:
<style type="text/css">
#nr-111 {
  border:20px solid #fff;
  background-color: #e2cda4;
  -moz-border-image:url(images/pergament_rahmen.png) 54 round;
  -webkit-border-image:url(images/pergament_rahmenseite.png) 54 round;
  -o-border-image:url(images/pergament_rahmenseite.png) 54 round; 
  border-image:url(images/pergament_rahmen.png) 54 round;  
}
}</style>

Rahmensegmente für Ecken

CSS 3 unterteilt den Rahmen in linke, rechte obere und untere Seiten und in linke-obere, rechte-obere, linke untere und rechte-untere Ecken. In alle Rahmen-Teile können nun unterschiedliche Bilder eingefügt werden.
Die Idee der Rahmen-Ecken-Bilder entstand beim Workaround mittels Tabellen oder mittels unzähligen, ineinander verschachtelten Containern, in die dann Bilder oder Hintergrundbilder gelegt wurden. Einfachere Hintergrundbild-Techniken werden auch künftig noch zum Tragen kommen, wozu Effekt-Bilder erzeugt werden, wie bei z.B. Apple-Store-Spiegelungen oder Crunchy-Look-Klebstreifen.

Ecken ab (und hinzu)

Ich hätte da noch weitergehende Ideen, wie negative Radien, die wirken, als hätte man eine Ecke abgebissen (a).
Vor nicht allzulanger Zeit waren schräg abgeschnittene Ecken auch beliebt (b).
Und negative Ecken erzeugten so etwas wie Eselsohren (c).
Ups, das ist ja alles schon möglich, dank CSS3 Tranform.
a)Ecke a b)Ecke b c)Ecke c d) Ecke d

Und hier ein Schmankerl von Jeffrey Way bei net.tutsplus.com:

Ribbon

/* HTML */
<div id="ribbonbox">  
  <h1 class="ribbon"> Ribbon <span class="arrow"></span> </h1>  
</div>
/* CSS3 */

/* By Jeffrey Way */
 #ribbonbox {  
    background: #666;  
    margin: 0px;  
    width: 300px;  
    height: 100px;  
    padding-top: 30px;  
    font-family: helvetica, arial, sans-serif;  
 }  

 h1.ribbon {  
  background: #e3e3e3;  
  background: -moz-linear-gradient(top, #e3e3e3, #c8c8c8);  
  background: -webkit-gradient(linear, left top, left bottombottom, from(#e3e3e3), to(#c8c8c8));  
  padding: 10px 20px;  
  margin-left: -20px;  
  margin-top: 0;  
  position: relative;  
  width: 70%;  

  -moz-box-shadow: 4px 2px 6px #292929;  
  -webkit-box-shadow: 4px 2px 6px #292929;  
  box-shadow: 4px 2px 6px #292929;  

  color: #454545;  
  text-shadow: 0 1px 0 white;  
 }  

/*
  Der Spickel besteht aus dem oberen Rahmenteil 
  mit der Gehrung (Winkelhalbierende) zum transparenten linken Rahmenteil 
  als Schräge des dimensionslosen Span:
*/
 .arrow {  
  width: 0; height: 0;  
  line-height: 0;  
  border-left: 20px solid transparent;  
  border-top: 14px solid #c8c8c8;  
  top: 104%;  
  left: 0;  
  position: absolute;  
 }

Transparenz

Transparenz funktioniert in IE und FF. Durch Transparenz kann man Elemente ein- und ausblenden und zusammenführen, es lohnt sich, mehrere Schichten übereinander zu legen.
Es gibt zwei Arten um Transparenz herzustellen:

  1. opacity: Auf ganze Container angewendet, wird alles darin befindliche gleich transparent.
  2. color: Der letzte Wert (das A) bei der RGBA und bei der HSLA Angabe steht für den Alphakanal und somit für Transparenz. Damit lässt sich die Transparenz einer Hintergrundfarbe oder Textfarbe separat steuern.
  3. filter: Der IE hat seine ganz eigenen Funktionen in der Sammlung 'filter', diese können auch Schatten werfen etc.

Opacity

Opacity wird ohne Prefix schon von FF dargestellt.

Opacity Opacity

Opacity Opacity

opacity

<style type="text/css">
#nr-08 {
  font-size:30px;
/* css 3 */
  -webkit-opacity: 0.5;
  -o-opacity: 0.5;
  -ms-opacity: 0.5;
  opacity: 0.5;
}
#nr-09 {
  font-size:30px;
/* css 3 */
  -webkit-opacity: 0.3;
  -o-opacity: 0.3;
  -ms-opacity: 0.3;
  opacity: 0.3;
/* css 2 */
  background-color: black;
  position:relative;
  left:-195px;
}
</style>

Color

rgba und hsla werden auch schon von FF ab Version 3.1 dargestellt.

hsla
Color

rgba
Color

Color hsla und rgba

<style type="text/css">
#nr-081 {
  font-size:30px;
/* css 3 */
  background-color:hsla(0,100%,50%,0.5);
}
#nr-091 {
  font-size:30px;
  position:relative;
  left:-195px;
/* css 3 */
  background-color:rgba(204,204,0,0.5);
}
</style>

Filter

Die Alpha-Filter von IE haben meinen FF Browser zum Absturz gebracht:
/* filter:Alpha(opacity=50, finishopacity=50, style=2;) */
Die Kurzversion soll aber brauchbar sein:
filter:Alpha(opacity=50)

Mehr CSS3

Ein paar weniger spektakuläre Style-Ergänzungen durch CSS 3 betreffen die Selektoren, nachzulesen unter den Kapiteln 'Neue Attribut Selektoren in CSS 3' und 'Pseudoelemente und PseudoKlassen' auf der Seite syntax.php.

Ein wohl richtig populäres Pseudoelement wird :nth-child() werden, besprochen bei der Zebra-Tabelle auf der Seite tabellen.php.

CSS3 Überblick und Einsicht

Ich verweise auf ein paar Seiten, die einen wiederholten Besuch wert sind, weil dort das Fortschreiten des CSS3-Standards mitverfolgt werden kann:

 


Valid XHTML 1.0 Check den Code.

CSS 3 Transform >> << IE Scroller
Ich bin hier: > CSS Lehrling >> CSS 3 Fancy
 
HTML und XHTML | CSS | JavaScript und DHTML | PHP und MySQL | Andere Sprachen
Letzter Update: 29.12.2011