Michael: Erben von anderen Formaten

Hallo!

Wollte mal wissen, ob ein Style Sheet Format von einem anderen erben und ich dieses speziell definieren kann. Ich würde gerne in einer Seite ein Format xyz definieren. Dies soll alle Eigenschaften des per css-Datei überall eingebundenen Formates abc erben, außer der Schriftfarbe, die anders aussehen soll. So würde mein Pseudo-Code aussehen:
<style type="text/css">
  <!--
 .xyz -> .abc { color: #000000; }
  -->
</style>

Weiß da jemand mehr?

Grüße
Michael

  1. Moin!

    <style type="text/css">
      <!--
     .xyz -> .abc { color: #000000; }
      -->
    </style>

    Weiß da jemand mehr?

    Eine Vererbung in deinem Sinne gibt es bei CSS nicht.

    Du hast zwei Optionen:

    .abc, .xyz {
     /* viele Definitionen */
    }

    .xyz {
      color:anders;
    }

    Das definiert parallel .abc und .xyz, und ändert hinterher einzelne Dinge nochmal ab. Ist absolut erlaubt, auch wenn der CSS-Validator zur Sicherheit eine Warnung von sich gibt.

    Alternativ (für den Validator):
    .abc, .xyz {
     /* viele Definitionen, aber nicht color */
    }
    .abc {
      color:diese;
    }
    .xyz {
      color:anders;
    }

    Und außerdem kannst du in einer Klassenangabe mehr als eine Klasse benutzen:

    .abc {
     /* viele Definitionen */
      color:diese;
    }
    .xyz {
      color:jene;
    }

    <span class="abc xyz">Text</span>
    Das sollte _eigentlich_ dazu führen, dass der Text mit den Definitionen aus .abc formatiert, aber mit der danach noch definierten Klasse xyz eingefärbt wird.

    Funktioniert aber mindestens nicht in Netscape 4 (der kann keine zwei Klassen).

    - Sven Rautenberg

    1. Hallo!

      .abc, .xyz {

      Irgendwo  habe ich mal gelesen, daß .abc und *.abc gleichwertig sind.
       Irgendwie war mir *.abc lieber und ich gewöhnte mir diese Syntax an.
       Irgendein Validator - nicht der von W3C - mokierte sich heute darüber. Soll mich das
       irgendwie beunruhigen?

      Besten Dank
      Viennamade

      1. hi,

        Irgendwo  habe ich mal gelesen, daß .abc und *.abc gleichwertig sind.

        * bezieht sich auf alle html-elemente.
        .klasse tut es aber genauso.

        Irgendwie war mir *.abc lieber und ich gewöhnte mir diese Syntax an.

        tu dir keinen zwang an - es ist korrekt.

        Irgendein Validator - nicht der von W3C - mokierte sich heute darüber. Soll mich das irgendwie beunruhigen?

        eventuell gibt es aber irgendeinen browser, der das nicht unterstützt, und der andere validator wollte dich diesbezüglich warnen ...?

        aber abgesehen davon gilt natürlich: du sollst keinen anderen validator neben dem des w3c haben :-)

        gruss,
        wahsaga

        1. Hallo!

          * bezieht sich auf alle html-elemente.
          .klasse tut es aber genauso.
          tu dir keinen zwang an - es ist korrekt.

          eventuell gibt es aber irgendeinen browser, der das nicht unterstützt, und der andere validator wollte dich diesbezüglich warnen ...?

          Ich habe "den anderen" jetzt gefunden: http://www.htmlhelp.com/tools/csscheck/. Der moniert überhaupt vieles ...

          Jedenfalls bin ich beruhigt.

          Danke
          Viennamade

          1. Hi,

            Ich habe "den anderen" jetzt gefunden: http://www.htmlhelp.com/tools/csscheck/. Der moniert überhaupt vieles ...

            der validiert aber nicht so schön einfach alle in einer angegebenen (x)html-Datei eingebundenen CSS.

            freundliche Grüße
            Ingo

          2. hi,

            Ich habe "den anderen" jetzt gefunden: http://www.htmlhelp.com/tools/csscheck/. Der moniert überhaupt vieles ...

            na ja, wenn du "aktuelles" CSS schreibst, sollte dich das nach dem hinweis auf der seite ja auch gar nicht mehr weiter verwundern:

            "Note: CSSCheck is primarily a CSS1 checker. Many CSS2 properties are supported, but new CSS2 selectors will generate errors."

            gruss,
            wahsaga

          3. Hallo Viennamade,

            Ich habe "den anderen" jetzt gefunden: http://www.htmlhelp.com/tools/csscheck/. Der moniert überhaupt vieles ...

            vergiss ihn - ich habe mal drei Stylesheets getestet bei denen der w3c-Validator weder Fehler noch Warnungen ausspuckt: es hat die Warnungen nur so gehagelt (irgendwas mit Konflikten mit Userstylesheets, Probleme mit IE3(!) und ein paar andere Sachen); außerdem kennt das Ding ja nicht mal css2 komplett:
            <zitat>
            Note: CSSCheck is primarily a CSS1 checker. Many CSS2 properties are supported, but new CSS2 selectors will generate errors.
            </zitat>
             - weswegen er meine Attributselektoren (und eben den * als Selektor) bemängelt hat.

            Jedenfalls bin ich beruhigt.

            brauchst du aber nicht - wenn der w3c-Validator zufrieden ist, sollte alles in Ordnung sein :-)

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
      2. Moin!

        .abc, .xyz {

        Irgendwo  habe ich mal gelesen, daß .abc und *.abc gleichwertig sind.

        Richtig, vor den Augen von CSS ist das so.

        Aber nicht vor den Augen von Netscape 4. Der kennt den Stern als Operator für "alle Elemente" nicht.

        Irgendwie war mir *.abc lieber und ich gewöhnte mir diese Syntax an.

        Also gewöhnte ich mir an, den Stern immer wegzulassen... :)

        - Sven Rautenberg

        1. Hallo!

          Irgendwo  habe ich mal gelesen, daß .abc und *.abc gleichwertig sind.
          Richtig, vor den Augen von CSS ist das so.
          Aber nicht vor den Augen von Netscape 4. Der kennt den Stern als Operator für "alle Elemente" nicht.

          _________________________
          |                         |
          |   V I E N N A M A D E   |
          |                         |
          |        D A N K T        |
          |                         |
          |   R A U T E N B E R G   |
          |_________________________|

        2. Hi,

          Irgendwo  habe ich mal gelesen, daß .abc und *.abc gleichwertig sind.
          Richtig, vor den Augen von CSS ist das so.

          Jetzt wollt ich doch grad schon protestieren, da die "specificity" ungleich sein müßte, hab aber doch noch mal nachgeguckt:
          der * gilt laut den Beispielen (sowohl in CSS 2 als auch in den Errata dazu) nicht als Elementname und ändert die Specificity nicht.
          *.abc und .abc sind also tatsächlich gleichwertig aus CSS 2 Sicht.

          Also gewöhnte ich mir an, den Stern immer wegzulassen... :)

          Also ich hab mir angewöhnt, den * dann zu verwenden, wenn ich den Netscape 4.x ausschließen will ;-)

          cu,
          Andreas

          --
          MudGuard? Siehe http://www.Mud-Guard.de/
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.