InnerSilence: Hex-Farbangaben abkürzen

Hi community,

auf irgend einer Seite bin ich mal auf den Hinweis gestossen, dass man die Hex-Farbangaben auf folgende Weise verkürzen kann:

Farbe ist z.B.: #ABCABC

stattdessen kann man schreiben: #ABC

Die Browser vervollständigen die Angabe, indem sie den Hex-Wert einfach wiederholen. Funktioniert sogar im alten NS 4.

Meine Frage: Stützt man sich bei diesen verkürzten Angaben auf die Fehlertoleranz der Browser, so dass der Browser jedesmal raten muss,  oder ist das Ganze durchaus regelkonform?

InnerSilence

  1. Hallo

    Ich habe davon noch nie was gehört, aber ich denke, es ist sicherer nichts di 3 fehlenden Zeichen auch noch zuschreiben.

    Die 3 Zeichen reisen das wirklich nicht raus oder?

    Patrick Müller

  2. Hi,

    Hi community,

    auf irgend einer Seite bin ich mal auf den Hinweis gestossen, dass man die Hex-Farbangaben auf folgende Weise verkürzen kann:
    Farbe ist z.B.: #ABCABC
    stattdessen kann man schreiben: #ABC
    Die Browser vervollständigen die Angabe, indem sie den Hex-Wert einfach wiederholen. Funktioniert sogar im alten NS 4.

    Nein, darauf solltest Du Dich nicht verlassen.
    Der Mozilla 1.2 macht es z.B. anders, nämlich so, wie es auch in CSS definiert ist:
    aus #ABC wird NICHT #ABCABC, sondern #AABBCC

    Der IE 5.5 zeigt schwarz an, Opera 6.05 ebenfalls, genauso wie Netscape 4.76.

    Ich weiß ja nicht, mit welchem Browser Du das probiert hast...

    Bei CSS-Farbangaben ist die 3-Stellige Kurzform ausdrücklich erlaubt, aber es wird eben nicht der gesamte Wert verdoppelt (A1F -> A1FA1F), sondern ziffernweise (A1F -> AA11FF).

    cu,
    Andreas

    --
    Der Optimist: Das Glas  ist halbvoll.
    Der Pessimist: Das Glas ist halbleer.
    Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
  3. Moin!

    auf irgend einer Seite bin ich mal auf den Hinweis gestossen, dass man die Hex-Farbangaben auf folgende Weise verkürzen kann:

    Farbe ist z.B.: #ABCABC

    stattdessen kann man schreiben: #ABC

    Es gibt die Möglichkeit, nur drei statt sechs Hexzahlen zu schreiben, aber die werden anders verdoppelt, als du es hier schreibst.

    Wenn du #ABCABC hast, gibt es keine Möglichkeit, dass in drei Hexzahlen zu schreiben und die _gleiche: Farbe zu erhalten.

    Wenn du eine 6stellige Zahl in eine 3stellige umwandeln willst, nimm vom Rot- Grün- und Blau-Wert jeweils die höhere Stelle:

    Aus #AB-CA-BC wird #A-C-B (Trennstriche nur zur Verdeutlichung gesetzt), was der Browser gemäß dem CSS-Standard dann als #AA-CC-BB interpretiert.

    Auf diese Weise kann man recht kurz geschrieben weiß #FFF, schwarz #000, rot #F00 etc. definieren.

    Ganz wichtig: Diese dreistellige Schreibweise ist _NUR IN CSS_ erlaubt, nicht für die Definition von Farben in den alten HTML-Attributen. Du muß also weiterhin <body bgcolor="#FFFFFF"> schreiben und darfst nicht mit bgcolor="#FFF" abkürzen.

    Meine Frage: Stützt man sich bei diesen verkürzten Angaben auf die Fehlertoleranz der Browser, so dass der Browser jedesmal raten muss,  oder ist das Ganze durchaus regelkonform?

    Es ist regelkonform im CSS-Standard definiert, die Browser machen es reproduzierbar immer gleich.

    - Sven Rautenberg

    --
    Diese Signatur gilt nur am Freitag.
    1. Moin Moin !

      [...]

      Auf diese Weise kann man recht kurz geschrieben weiß #FFF, schwarz #000, rot #F00 etc. definieren.

      Ganz wichtig: Diese dreistellige Schreibweise ist _NUR IN CSS_ erlaubt, nicht für die Definition von Farben in den alten HTML-Attributen. Du muß also weiterhin <body bgcolor="#FFFFFF"> schreiben und darfst nicht mit bgcolor="#FFF" abkürzen.

      [...]

      Es ist regelkonform im CSS-Standard definiert, die Browser machen es reproduzierbar immer gleich.

      Schön und gut, aber was bringt es ? Warum hat man sich das ausgedacht ?

      Es spart drei Bytes ein. In Zeiten, in denen man selbst im Handy schon Megabytes hat, wirklich ein enormer Gewinn.

      Es spart dem tippenden Seitenentwickler drei Anschläge im zentralen Stylesheet. Der mausbewehrte Seitenkleber greift ohnehin zum Color Picker, das bringt ihm hier also gar nichts.

      Ich sehe in dieser Notation absolut keinen Vorteil, ganz im Gegenteil: Der Parser muß noch einen weiteren Sonderfall berücksichtigen.

      Alexander

      --
      <!--#include file="signature.html" -->
      1. Hallo,

        Es spart dem tippenden Seitenentwickler drei Anschläge im zentralen Stylesheet. Der mausbewehrte Seitenkleber greift ohnehin zum Color Picker, das bringt ihm hier also gar nichts.

        Das haengt ja wohl vom jeweiligen "Color Picker" ab. HTML-Kit bietet z. B. bei der Farbauswahl zunaechst die moeglichen Ziel-Schreibweisen in einem Auswahlmenue an und erst danach die Farben zum Anklicken. Heraus kommt dann fuer rot:

        #ff0000
        red
        #ff0000
        #f00
        rgb(255,0,0)
        rgb(100%,0%,0%)

        Ich sehe in dieser Notation absolut keinen Vorteil, ganz im Gegenteil: Der Parser muß noch einen weiteren Sonderfall berücksichtigen.

        Das kommt immer darauf an, was man wie erreichen moechte. Beim dynamischen Zuweisen von Farben kann die Kurzschreibweise oder rgb() durchaus von Vorteil sein. Beim Erstellen von SVG-Dokumenten verwende ich die Kurzschreibweise besonders gern ...

        MfG, Thomas

      2. Moin!

        Es ist regelkonform im CSS-Standard definiert, die Browser machen es reproduzierbar immer gleich.

        Schön und gut, aber was bringt es ? Warum hat man sich das ausgedacht ?

        Es spart drei Bytes ein. In Zeiten, in denen man selbst im Handy schon Megabytes hat, wirklich ein enormer Gewinn.

        Die dreistellige Farbangabe ist unabhängig von der Farbtiefe des Displays - sagt jedenfalls das W3C:
        "The format of an RGB value in hexadecimal notation is a '#' immediately followed by either three or six hexadecimal characters. The three-digit RGB notation (#rgb) is converted into six-digit form (#rrggbb) by replicating digits, not by adding zeros. For example, #fb0 expands to #ffbb00. This ensures that white (#ffffff) can be specified with the short notation (#fff) and removes any dependencies on the color depth of the display."
        http://www.w3.org/TR/REC-CSS2/syndata.html#value-def-color

        - Sven Rautenberg

        --
        Diese Signatur gilt nur am Freitag.
  4. Hi,

    Meine Frage: Stützt man sich bei diesen verkürzten Angaben auf die Fehlertoleranz der Browser, so dass der Browser jedesmal raten muss, oder ist das Ganze durchaus regelkonform?

    diese Notation ist absolut korrekt, siehe auch

    http://www.w3.org/TR/CSS2/syndata.html#color-units

    und funktioniert in allen mir bekannten grafischen Browsern.

    LG Roland

    --
    Warum schreibst *DU* keinen Beitrag? Fauler Sack. Konsument!
    http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm