Archiv:

Latest photoblog

photoblog

Blog » Ein kleiner Blick auf CSS3

Ein kleiner Blick auf CSS3

Der CSS2.1-Standard steht offiziell vor seiner Verabschiedung. Im Moment läuft der sogenannte „Last Call“, bei dem man bis zum 15. Juli Zeit hat Kommentare abzugeben. Fein, dann fehlt jetzt nur noch die vollständige, browserweite Unterstützung und korrekte Interpretation, dann sind wir schon mal ein ganzes Stück weiter. Da CSS2.1 nun dann wohl offiziell da ist, können wir, weil experimentierfreudig und neugierig, schon einmal einen ersten Blick darauf werfen, was uns zukünftig in CSS3 erwartet, wenn die großen Browserhersteller diesen Standard irgendwann in einigen Jahren (Jahrzehnten?) mal vollständig unterstützen sollten.

Daher hier nun eine kleine Zusammenfassung dessen, was mir an neuen Features persönlich positiv ins Auge fiel. Eine genaue Syntax oder Funktionsbeschreibung werde ich mit diesem Text jedoch bewusst nicht wiedergeben, da bisher, wie erwähnt, noch lange kein Browser den kompletten CSS3 Umfang unterstützt, und ich, ohne es testen zu können, keinen möglicherweise falschen Code beschreiben möchte. Ausführlicher und „richtiger“ kann man es sich beim W3C direkt durchlesen, allerdings nur auf Englisch. Die Links dazu gebe ich mit auf den Weg. Hier vorhandene Codebeispiele sind in der Regel aus dem englischen Text des W3C übernommen.

Ok, genug Gesabbel. Fangen wir an.

Erzeugter und ersetzter Content

Als erstes einmal dürfte in CSS3 zum Beispiel der große Umfang von erzeugten und ersetzten Content interessant werden. Hiermit soll es beispielsweise möglich sein mehrere ::before und ::after-Elemente verschachtelt oder hintereinander auf einen Selektor anzuwenden. Ein Code wie

div { content: "A"; }
div::before {content: "B";}
div::before::before {content: "C";}

würde also im Browser so erscheinen:

,-----------------------.
| ,---------.           |
| | ,---.   |           |
| | | C | B | A         |
| | `---'   |           |
| `---------'           |
`-----------------------'

Wobei hier die before-Elemente auf den unteren Ebenen jeweils die Deklarationen der übergeordneten Eltern-Ebene(n) zugewiesen bekommen. Beispiel: das div bekommt einen roten Hintergrund, sowie gelbe Schrift. Dies gilt auch für die Bereiche B und C. Bekommt der Bereich unter B (div::before {content: "B";}) nun statt des roten einen blauen Hintergrund, so gilt dies auch für den Bereich C, logischerweise nicht jedoch auch für A.

Eine andere Möglichkeit soll sein, quasi unabhängige ::before und ::after Pseudoelemente zu benutzen. Diese können quasi „positioniert“ werden. ::before(1) entspricht dabei dann dem einfachen ::before. Möglich ist dann aber auch das Positionieren eines zweiten Elements, vor dem ersten. Beispiel:

div { content: "A" }
div::before { content: "B"; }
div::before(2) { content: "C"; }

ergäbe im Browser die folgende Darstellung:

,-----------------------.
| ,---. ,---.           |
| | C | | B | A         |
| `---' `---'           |
`-----------------------'

Die durch ::before erzeugten Inhalte würden zwar immernoch die Deklarationen des Erzeugers übernehmen, jedoch nurnoch auf der einen Ebene des Erzeugenden Divs selbst. So interpretiere ich die Darstellung auf der Seite des W3C jedenfalls.
http://www.w3.org/TR/css3-content/#inserting

Zwei bisher von keinem der aktuellen Browsern unterstützte Pseudo-Elemente sind ::outside und ::alternate. Mittels ::outside soll es möglich sein Elemente außerhalb des Erzeugerelementes zu steuern, um diesem z.B. einen zweiten Rahmen zu verpassen. Vom Prinzip her wohl ähnlich wie :before und :after, jedoch wie gesagt elementumfassend.
::alternate ist, wie der Name es vermuten lässt, ein Pseudo-Element um alternierenden Inhalt an anderer Stelle im Dokument einzufügen. Dieses Thema erscheint mir beim Lesen allerdings noch etwas zu komplex zum Erläutern, daher besser selbst den entsprechenden Teil in der Working Draft, CSS3-Content, Punkt 4.4 lesen:
http://www.w3.org/TR/css3-content/#inserting1

Dies war nur ein kleiner Auszug zum Thema „generierter Content“ aus der Working Draft, welche laut Roadmap bereits im ersten Quartal 2006 eingeführt werden soll. Weitere, teils sehr komplexe Punkte finden sich im CSS3-Content-Bereich des W3C:
http://www.w3.org/TR/css3-content

Hintergründe und Rahmen

Yeeehaw! … äähm, sorry. Aber irgendwas in der Art dachte ich mir, als ich mir den Entwurf für die background-Eigenschaften von CSS3 zu Gemüte führte, welcher schon bald offiziell verabschiedet werden soll. Künftig soll es dann beispielsweise möglich sein, ein Hintergrundbild zu skalieren (ich weiß, sowas macht man nicht), oder das Bild schon im Border, bzw erst nach dem Padding-Bereich anfangen zu lassen (background-origin: border/padding/content; vgl. Boxmodell).

Die für mich schönste Neuerung was Hintergrundbilder betrifft ist die, dass man nun für ein Element mehrere Hintergründe definieren und positionieren kann:

background-image: url(bild1.png), url(bild2.png), url(bild3.png);
background-repeat: no-repeat, repeat-x, repeat-y;
background-position: 20% 25%, 40% 10%, 50% 15%;

Auf diese Art hätte ich die Bilder »bild1.png«, »bild2.png« und »bild3.png«, welche sich gar nicht, nur auf der x-Achse und nur auf der y-Achse kacheln.

Auf diese Weise lassen sich, denke ich, unzählige Gestaltungsmöglichkeiten auftun. Wie sehr habe ich eine solche Möglichkeit in Vergangenheit bereits vermisst. Noch dazu wird es mittels background-crop möglich sein, ein komplettes Bild in den Cache zu laden, jedoch nur einen Teilausschnitt dessen im Browser anzuzeigen. Dies, könnte ich mir vorstellen, kann sich gut nutzen lassen, um Thumbnails für interessante und einfache (jedoch Ladeintensive) Bildgalerien zu erzeugen.

Das sind die für mich nennenswerten großen Neuerungen zum Thema Backgrounds. Kommen wir also zu den „fancy Borders“.

Hier stellt sich mir teilweise ernsthaft die Frage stellt: Wer bitte braucht das ??? Na gut, vielleicht ist das bisher auch einfach nur jenseits meiner Vorstellungskraft, aber ich möchte wirklich mal wissen wer einen border-style: wave;, dot-dash, oder dot-dot-dash brauchen wird? (vgl. Fatboy Slim – Slash dot dash)

Spielerei, aber eine vermutlich brauchbarere Neuerung ist die Möglichkeit, als border-style eine URL zu einem Bild anzugeben. So kann man sich, wie bisher nur mit Tricks, seine eigenen selbstgestylten Rahmen zusammenstellen. Könnt zwar meiner Meinung nach in eine wahnsinns Frickelei ausarten, in den Fingern kribbeln tut‘s mir aber jetzt schon, wenn ich mir überlege was man damit für einen Spaß haben könnte. ;)

Was bisher ebenfalls nur mit Tricks zu erreichen war, sind abgerundete Ecken. Diese gehören ab CSS3 zum Standard. Einfach (wie bisher bereits in Mozilla Browsern mittels @-moz-border-radius möglich) einen Radius angeben, und schon hat man auf einfachste Weise ein Element mit abgerundeten Ecken. Endlich weg vom bisherigen Standard-Ecken-Kastenlayout? Coole Sache.

Ebenfalls eine coole Sache könnte die box-shadow-Eigenschaft werden. Mittels box-shadow soll es möglich sein einen Offset, sowie eine Farbe anzugeben um einem Element einen einfachen Schlagschatten anzuhängen. Wobei sich hier ja bereits in der Vergangenheit zahlreiche Varianten auftaten um Schlagschatten egal welcher Art zu erzeugen.

Alles zum Thema Backgrounds & Borders, wie gesagt beim W3C:
http://www.w3.org/TR/2005/WD-css3-background-20050216

Spaltensatz

Auch dies könnte eine ziemlich nützliche, nie da gewesene Errungenschaft sein, wenn man sich in Fachforen einmal anschaut, bei denen in unzähligen Threads gefragt wird, wie man 2 Spalten gleich hoch bekommt. Leider scheint laut Working-Draft bisher keine Möglichkeit vorgesehen zu sein einen Umbruch in eine zweite Spalte zu erzwingen, die zweite Spalte fängt also generell dort an, wo für die Erste kein Platz mehr ist.

Aber ich bin mir sicher auch hierbei wird es einigen findigen Entwicklern gelingen einen Workaround zu basteln. Testen kann man dies übrigens bereits in aktuellen Developer-Versionen des Firefox 1.1 Release. Folgenden Code dafür einfach in ein neues HTML-Dokument kopieren:

<div style="width: 400px; -moz-column-count: 2; 
-moz-column-width: 50%; -moz-column-gap: 26px;">
Hier hinein kommt ein Blindtext</div>

Die column-rule-Angaben werden hier bisher leider wohl noch nicht interpretiert. Dafür soll es später jedoch auch möglich sein, Elemente z.B. auf dem Zwischenraum floaten zu lassen.
http://www.w3.org/TR/css3-multicol/

Float

… super Stichwort. Kannten wir bisher nur float: left; und float: right;, dürfen wir uns nun mit top, bottom, inside, outside, start, end und none rumärgern kreativ auslassen. Welches float dann nun genau wofür benutzt wird, lest es selbst:
http://www.w3.org/TR/css3-box/#the-float

Äquivalent dazu gibt es natürlich auch ein clear für jede dieser Richtungen.

Fazit

Alles in allem sieht die Working Draft für mich schon sehr interessant aus, und ich bin gespannt was es für neue spannende Tipps und Tricks geben wird, wenn dieser Standard endgültig verabschiedet und in einigen Jahren (Jahrzehnten?) in die Browser implementiert ist. Natürlich ist dies hier auch nur ein minimal kleiner Auszug von dem, was in CSS Level 3 vorgesehen ist, um Euch vielleicht ein bisschen den Mund wässerig zu machen, wie es bei mir beim Lesen der Draft auf jeden Fall an einigen Stellen der Fall war. Leider ist dieser Artikel nun doch nicht so ausführlich geworden wie ich es mir gewünscht habe, für mehr fehlt mir jedoch im Moment die Zeit, ich hoffe Ihr habt Verständnis ;)

Wer selbst einmal einen Blick auf die Roadmap und CSS3 werfen möchte, findet diese unter http://www.w3.org/Style/CSS/current-work#table

16 Kommentare zu “Ein kleiner Blick auf CSS3”

  1. Grafik: GravatarNick Blume:

    Das hört sich ja superinteressant an, danke für die Infos, Manuel. Wegen den Googlympics: die Zeit fehlt echt!!! Wär aber auch so ein schönes Projekt…

  2. Grafik: Gravatarrollsroick: roicksBLOG » Lesespass am Wochenende.:

    […] b. Versprochen! Wenn das mal nichts ist. Genug geblubbert. Es folgen die ersten Links. Manuel Bieh: Ein kleiner Blick auf CSS3 Manuel Bieh gibt einen Einblick i […]

  3. Grafik: GravatarJens Grochtdreis:

    Danke für den Überblick. Manches davon hört sich nach sinnloser Spielerei an, manches ist eine gute Idee. Das Problem werden wieder die Browser sein. Korrektur: das problem wird wieder Microsoft sein. Opera und Mozilla untertsützen ja jetzt schon teilweise CSS3, M$ wird bestimmt noch 30 Jahre brauchen, um das zu schaffen.
    Das reduziert meine Begeisterung.
    Aber ich lasse mich mal überraschen.

  4. Grafik: GravatarBjörn:

    M$ wird bestimmt noch 30 Jahre brauchen

    Du Optimist ;)

  5. Grafik: GravatarManuel:

    naja. vermutlich werden wir nich mehr dazu kommen css3 wirklich benutzen zu können, da es, bis m$ das unterstützt schon wieder irgendwas neues geben wird.

    wobei das „neue“ dann sowieso wieder nicht unterstützt werden wird. von daher werden wir vielleicht doch dazu kommen *g*

    bei deinem kommentar fällt mir übrigens auf das ich den blockquote garnich gestyled habe ;)

  6. Grafik: GravatarArne Kamola ~ Blog » Blog Archive » Deer Park Alpha 1 - Firefox 1.1 Preview:

    […] esign den Blog von Manuel Bieh, in dem er, Manuel Bieh, am vergangenen Freitag eine kleine CSS3-Preview veröffentlichte. Dort nennt er seine persönlichen Highligh […]

  7. Grafik: GravatarArne Kamola:

    DerTraum von CSS3 könnte schneller in Erfüllung gehen, als du denkst. Mozilla veröffentlichte Anfang des Monats eine Alpha-Version des Firefox 1.1: Deer Park Alpha 1. Einiges was du angesprochen hast, wird dort zu verfügung stehen. Siehe auch meinen Blog: Deer Park Alpha 1

    Mit Microsofts Internet Explorer habt ihr wohl recht, aber in Zeiten von Firefox, Opera und KHTML basierenden Browsern (Konqueror, Safari) tangiert mich der Internet Explorer nur perifer (vor allem unter Linux). Dann erstelle ich lieber für den IE ein extra Stylesheets, als auf die Neuerungen von CSS3 verzichten zu müssen!

  8. Grafik: GravatarMicha:

    Ein sehr interessanter Ausblick auf die lebenserleichternden Möglichkeiten die man dank des Internet Explorers als Entwickler wohl erst in Jahrzehnten zu schmecken wissen wird.

  9. Grafik: Gravatarkronn.de - weblog » Blog Archive » Kalenderwoche 25:

    […] einer Bericht über einen GEZ-Besuch, gefunden bei jot*be Der bereits vielerorts erwähnte Damit ich nicht […]

  10. Grafik: GravatarHerausforderung elastische Layouts - Markup: Webdesign, Webstandards und Accessibility:

    […] Ausblick auf CSS 3 […]

  11. Grafik: GravatarDaywish's Blog » Blog Archiv » CSS3:

    […] Ein kleiner Blick auf CSS3 von Manuel Bieh […]

  12. Grafik: GravatarKalyxo denkt » Argumente für ein fixiertes oder variables / flüssiges / elastisches Layout:

    […] Ein kleiner Blick auf CSS3 Technischer Artikel über die Veränderungen, die in CSS enthalten sein werden. […]

  13. Grafik: GravatarGizcore Laboratories - Webdesign, XHTML, CSS, Wordpress:

    […] Einen deutschen und zugleich informativen Artikel, findet man auch auf dem Blog von Manuel Bieh.. […]

  14. Grafik: GravatarChristof Hahn:

    Hallo,
    leider die interessantesten Änderungen, die vor allem medienspezifische Layouts ermöglichen (z. B. Cross References in Dokumenten) wurde in diesem Artikel leider gar kein Raum geschenkt.

  15. Grafik: Gravatargraduate student grants and scholarships:

    graduate student grants and scholarships…

    graduate student grants and scholarships…

  16. Grafik: GravatarDieter Welzel's Blog:

    CSS3: Stufenweise Verbesserung des Blog-Layouts…

    Was ist CSS3?
    CSS3 bietet eine Menge neuer Wege für die Gestaltung von Webseiten. Deshalb wird es von vielen Webseitenentwicklern sehnsüchtig herbeigesehnt. Auch von mir!
    Die Verabschiedung dieses Standards wird wohl leider noch einige Jahre auf sich…

Die Trackback-URL lautet