God: Mehrere Klassen funktionieren nicht?

Hi,

folgendes habe ich im Stylesheet:

.stfont {

background-color: transparent;
  color: black;
  font-weight: normal;
  font-size: 11px;
  font-family: Verdana, Tahoma, sans-serif;
  text-decoration: none;
}

.stbold {

font-weight: bold;
}

Wenn ich jetzt schreibe:

<span class="stfont stbold">Text</span> wird die 2. Klasse nicht berücksichtigt, also der Text wird nicht fett ausgegeben. Warum?
Ich hatte das Problem auch mal mit einer Definition für Links, da hats aber geholfen in der CSS Datei jeder Klasse ein a davorzuhängen. Hier kann ich aber kein span davorschreiben, weil ich ja nicht weiß ob ich die Klasse nur in span Tags verwende.

Bye, God

  1. Hi

    <span class="stfont stbold">Text</span> wird die 2. Klasse
    nicht berücksichtigt, also der Text wird nicht fett
    ausgegeben. Warum?

    IE

    Wieso lässt du font-weight: normal; nicht weg?

    Gruss
    chlori

    1. Wieso lässt du font-weight: normal; nicht weg?

      Hm, ist eigentlich nicht wikrlich notwendig, stimmt. Aber trotz allem müsste die Schrift doch fett angezeigt werden, oder?

      1. Hi

        Wieso lässt du font-weight: normal; nicht weg?

        Hm, ist eigentlich nicht wikrlich notwendig, stimmt.
        Aber trotz allem müsste die Schrift doch fett angezeigt werden, oder?

        Macht sie ja, oder? "Müsste" nützt nichts.

        Gruss
        chlori

        1. Nein, auch wenn ich das font-weight in stfont lösche bleibt der Text normal. Ich dachte eigentlich, wenn ich schreibe class="stfont stbold" wird der Text fett, schreibe ich class="stbold stfont" wird der Text normal, also immer in der Reihenfolge in der die Klassen geschrieben werden.

          1. Hi

            Nein, auch wenn ich das font-weight in stfont lösche
            bleibt der Text normal.

            Dieser Code erzeugt bei mir (Moz1.7b/IE5 Win) Text,
            der bold ist:

            <body>
            <style type="text/css">
            <!--
            .stfont {
              background-color: transparent;
              color: black;
              font-size: 11px;
              font-family: Verdana, Tahoma, sans-serif;
              text-decoration: none;
            }

            .stbold {
              font-weight: bold;
            }
            -->
            </style>

            <span class="stfont stbold">Text</span>
            </body>

            Gruss
            chlori

            1. Stimmt, ich bin rad auf was extre bescheuertes gekommen. Ich habe die Klassen anders herum im Stylesheet gehabt, also zuerst stbold dann stfont. Und nur deshalb ist der Text nicht fett? Stelle ich stbold nach stfont gehts auch bei mir. Das verstehe ich jetzt aber gar nicht.

              1. Hi,

                Stelle ich stbold nach stfont gehts auch bei mir. Das verstehe ich jetzt aber gar nicht.

                ist doch ganz einfach: bei gleicher Wertigkeit wird die zuletzt angegebene Definition verwendet.
                Das Problem ättest Du z.B. nicht, wenn Du bei .stfont auf font-weight:normal; verzichtest.

                Aber wie schon angemerkt, wäre ein zusätzlicher sinnvoller Tag eine bessere Lösung.
                Alternativ ginge auch die in einem anderen Beitrag angesprochene Mehrfachzuweisung
                .stfont, .stbold {}
                .stbold { font-weight:bold; }
                wodurch das Ganze dann auch im NN4 funktioniert und Du nicht unnötiger Weise mehrere Klassen angeben mußt.

                freundliche Grüße
                Ingo

  2. Wenn ich jetzt schreibe:

    <span class="stfont stbold">Text</span> wird die 2. Klasse nicht berücksichtigt, also der Text wird nicht fett ausgegeben. Warum?

    Nur mal so als Anregung.
    CSS dient in erster Linie dazu HTML Elemente zu formatieren. D.h. du zeichnest deinen Text mit HTML Tags aus und giobst diesen dann mit CSS ein aussehen. Falls es kein passendes HTML Tag gibt, das die von dir gewübnschte Formtierung ausdrückt werden Klassen verwendet.

    Um das auf dein Codeschnipsel zu übertragen. Mein Eindruck ist, du hast einen Bereich, in dem der Text eine bestimmte Formatierung (.stfont) erhalten soll und dort sind Textabschnitte fett. Nach der Vorstellung wie man mit CSS/HTML auszeichnend sollte sowas bei dir rauskommen:

    <div id="bereich">
    normaler Text <b>fetter text</b>
    </div>

    statt DIV kannst du evtl. auch <p> verwenden je nachdem wie komplex der Bereich ist.

    und im CSS:

    #bereich
    {
      background-color: transparent;
      color: black;
      font-size: 11px;
      font-family: Verdana, Tahoma, sans-serif;
    }

    Struppi.

    1. Also den <b> Tag verwende ich wohl wirklich nicht mehr. Der ist doch total veraltet. Ziel ist ja auch, dass ich die fettschrift für die ganze Seite nachträglich mit einem Handgriff zb. etwas dicker oder dünner machen kann, ich will nicht jedes <b> entfernen. Und ids kann ich nicht verwenden, da sie öfter als einmal auf der Seite vorkommen würden.

      1. Hi

        Ziel ist ja auch, dass ich die fettschrift für die ganze
        Seite nachträglich mit einem Handgriff zb. etwas dicker
        oder dünner machen kann

        <strong> ist dafür da.

        <strong style="font-weight:blah;"

        Gruss
        chlori

        1. Ok, von mir aus <strong>. Aber gehen wir mal weg von der Fettschrift und nehmen wir an in stbold steht color: red;
          Dann wird der Text ja auch nicht rot. stbold - oder besser gesagt jede weitere Klasse - wird einfach irgnoriert und das stört, weil das nicht normal sein kann.

          1. Ok, von mir aus <strong>. Aber gehen wir mal weg von der Fettschrift und nehmen wir an in stbold steht color: red;

            Auch das ist mit der Vorgehensweise, die ich beschrieb enfach und schnell möglich.
            Wie gesagt du verzettelst dich und das evtl. unnötigerweise. Zumal das verwenden von mehreren Klassen noch längst nicht in allen Browsern funktioniert.

            Struppi.

            1. Dann erklär mal wie du es machen würdest mit der Farbe.

              1. Hi

                Dann erklär mal wie du es machen würdest mit der Farbe.

                strong{
                color:red;
                }

                Gruss
                chlori

                1. Ich will ja nicht jedes strong rot haben. Ich will eben bestimmte Textpassagen zusätzlich rot einfärben, dann muss ich eben eine Klasse hinzufügen.

                  1. Hi

                    Ich will ja nicht jedes strong rot haben.

                    <strong>blah</strong> blah </strong class="foo">foo</strong>

                    Gruss
                    chlori

                    1. Das Problem ist ja das:

                      <span class="stfont">blablabla</span> so siehst aus. Und wenn ich das jetzt rot will, kann ich entweder nochmal span Tags schreiben oder gleich die Klasse dranhängen. Das klappt aber komischerweise nur, wenn stbold in der CSS Datei auch hinter stfont steht, was ich total abartig finde.

                      1. Hi

                        Und wenn ich das jetzt rot will, kann ich entweder
                        nochmal span Tags schreiben oder gleich die Klasse dranhängen.

                        Kannst du ja bei strong auch.

                        Gruss
                        chlori

                        1. Ja aber wozu sollte ich strong schreiben wenn ichs nicht brauche?

                          1. Ja aber wozu sollte ich strong schreiben wenn ichs nicht brauche?

                            Du willst einen Textabschnitt hervorheben, oder anders auszeichnen, folglich will du eine HTML Tag verwenden, was das tut. Wie das dann am Ende aussieht bestimmt dein (oder mein) CSS.
                            Eine Klasse ist lediglich eine Möglichkeit Auszeichnungen zu verwenden die du mit HTML nicht ausdrücken kannst. Die zu häufige Verwendung von Klassen macht es für dich schwerer.

                            Struppi.

                          2. Hi

                            Ja aber wozu sollte ich strong schreiben wenn ichs nicht brauche?

                            • Für User Agents ohne CSS (zB Suchmaschinen-Spider)

                            Gruss
                            chlori

                  2. Ich will ja nicht jedes strong rot haben. Ich will eben bestimmte Textpassagen zusätzlich rot einfärben, dann muss ich eben eine Klasse hinzufügen.

                    Nein, wie ich schon schrieb, du definierst Bereiche in denen die HTML Tags verschieden aussehen können. Aber in den Bereichen haben die Tags die Gleiche Bedeutung. Wenn du aber eine auszeichnung hast, die mit keinem Tag auszudrücken ist, dann nimmst du eine Klasse. Also wenn du einen Bereich hast, in dem hervorgehobener Text rot sein soll dann machst du das so:
                    #bereich strong{ color:red;}

                    Wenn es aber nicht hervorgehobener Text sein soll, sondern etwas anderes überlege ob du es mit einem anderen Tag auszeichnen kannnst http://www.w3.org/TR/1998/REC-html40-19980424/struct/text.html#edef-STRONG
                    wenn nicht, dann ist eine Klasse deine Wahl.

                    Struppi.

              2. Dann erklär mal wie du es machen würdest mit der Farbe.

                wie gesagt es kommt drauf an was du mit deiner Klasse ausdrücken willst. Wenn es darum geht einen Text in einem Fließtext hervorzuheben benutze <strong> und im CSS:

                strong
                {
                color:red;
                font-weight:normal;
                }

                Struppi.

          2. Hi

            Dann wird der Text ja auch nicht rot.

            Bei mir ist der Text rot.

            Gruss
            chlori

      2. Also den <b> Tag verwende ich wohl wirklich nicht mehr. Der ist doch total veraltet. Ziel ist ja auch, dass ich die fettschrift für die ganze Seite nachträglich mit einem Handgriff zb. etwas dicker oder dünner machen kann, ich will nicht jedes <b> entfernen. Und ids kann ich nicht verwenden, da sie öfter als einmal auf der Seite vorkommen würden.

        ok, strong statt b

        Aber das ist doch genau das was mit meinem Beispiel möglich ist, während du dich mit doppelten Klassen verzettelst, kannst du das ganze in meinem Beispiel mit einem Handgriff ändern du kannst auch schreiben:

        strong (in meinem Beispiel b)
        {
        font-weight:normal;
        }

        wie ich schon schrieb, du solltest HTML tags benutzen, die das was du ausdrücken willst beschreiben, wenn es die nicht gibt, dann nimm Klassen, aber letztlich kann man für Klassen nur sagen, je weniger umso besser. Also wenn der Text hervorgehoben werden soll -> strong. Wie er dann hervorghehoben wird bestimmt dein CSS.

        Struppi.

    2. Hi

      <div id="bereich">
      normaler Text <b>fetter text</b>
      </div>

      Vermutlich meinst du <strong> statt <b>, oder?

      Gruss
      chlori

  3. Ich hab mal ein paar Seiten rausgesucht, wo vielleicht besser beschrieben wird, was ich meine:

    eine kurze Ausführung:
    http://www.sysiphus.de/anybrowser/t_htmlweb.html

    eine sehr lange
    http://www.jendryschik.de/wsdev/einfuehrung/xhtml/bodyelemente.html ff.

    es gibt sicher noch mehr, aber vielleicht hilft dir das.

    Struppi.