Multi: CSS-Klasse dynamisch zuweisen

Mahlzeit,
ich vermute mal, es es was ganz banales, aber ich schaff es nicht, per Javascript das CSS eines p-Tags zu überschreiben.

Grundsätzlich will ich den Hintergrund wechseln. Das Problem dabei, ich weise erstmal per

  
#mainmenu p {  
	background: #030;  
	border: 1px solid #0F0;  
	-moz-border-radius: 10px;  
}  
  
.hightlight {  
	background:#090;  
}  

u.a. einen Hintergrund zu. Dann wird per Scriptacoulus Grösse und Position angepasst und per

  
document.getElementById('mainmenu' + _target).className = "hightlight";  

die neue Klasse zugewiesen. Wenn ich im oberen CSS das background entferne, funktioniert es, es lässt sich der Hintergrundwert also nicht überschreiben, soweit bin ich schonmal.

Ich hab auch probiert, den Hintergrundwert erstmal zu löschen:

  
document.getElementById('mainmenu' + _target).style.background = '';  

das bringt aber auch nichts.
Wie kann ich den Browser jetzt dazu bewegen, mir den Wert von background zu überschreiben? Die Anwendung läuft ausschliesslich im FF ab Version 3.5

  1. Lieber Multi,

    #mainmenu p {...}

    hat eine höhere Spezifität als

    .hightlight {...}

    Deshalb kriegst Du "Probleme" mit

    Wie kann ich den Browser jetzt dazu bewegen, mir den Wert von background zu überschreiben? Die Anwendung läuft ausschliesslich im FF ab Version 3.5

    Alles klar? Wenn nicht: <http://de.selfhtml.org/css/formate/kaskade.htm#spezifitaet@title=Spezifität in SELFHTML>

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Alles klar? Wenn nicht: <http://de.selfhtml.org/css/formate/kaskade.htm#spezifitaet@title=Spezifität in SELFHTML>

      Danke, das war das, was ich brauchte. Ein !important in der neuen Klasse hat das Problem gelöst.
      Ich muss zugeben, ich kenn !important zwar, hab aber nie nachgelesen, was es  bewirkt. Wieder was gelernt.

      1. Bounjoun Multi,

        Ich muss zugeben, ich kenn !important zwar, hab aber nie nachgelesen, was es  bewirkt. Wieder was gelernt.

        Ist normalerweise auch nicht so !wichtig. Ich hab's nie benötigt. Nur auf die Spezifi_zi_tät achten...

        Adiou.

        --
        Ich bin eigentlich ganz anders, aber ich komme so selten dazu. - Ödön von Horwáth
        Ist Rudi Carrell Gott? Oder George Harrison Ford?
        Ich bin faul und das ist gut so.
        1. Ist normalerweise auch nicht so !wichtig. Ich hab's nie benötigt. Nur auf die Spezifi_zi_tät achten...

          Wenn ich aber ohne !importent arbeite, müsste ich meine komplette CSS-Struktur wieder umwerfen, da die meisten Elemente per ID ihre Eigenschaften zugewiesen bekommen. Denn wenn ich das richtig gelesen hab, ist die Spezifität fest vorgegeben.

          Was du allerdings mit Spezifizität in dem Zusammenhand meinst, versteh ich nicht. Kannst du das mal erläutern, vielleicht steh ich ja nur auf der Leitung.

          1. Bounjoun Multi,

            Wenn ich aber ohne !importent arbeite, müsste ich meine komplette CSS-Struktur wieder umwerfen, da die meisten Elemente per ID ihre Eigenschaften zugewiesen bekommen. Denn wenn ich das richtig gelesen hab, ist die Spezifität fest vorgegeben.

            Ich schreibe meine CSS vom Anfang an so, dass ich die Spezifizität berücksichtige. So brauche ich Krücken wie !important nicht.

            BTW: erinnert mich irgendwie an !impotent... ;)

            Was du allerdings mit Spezifizität in dem Zusammenhand meinst, versteh ich nicht. Kannst du das mal erläutern, vielleicht steh ich ja nur auf der Leitung.

            Brauchst nicht auf der Leitung zu stehen, ich stehe manchmal auch auf dem Schlauch. Vor allem, wenn ich die deutschen Sprachwissenschaftler sehe, die aus »Adaptation« Adaption machen und eben aus »Spezifizität« Spezifität machen. Die deutsche Sprache hatte schon immer ihre Probleme mit der Derivation von Wörtern lateinischer Herkunft, aber die beide eben zitierten sind für mich der Gipfel.

            Englisch: specificity
            Französisch: spécificité

            Englisch: adaptation
            Französisch: adaptation

            Diese Form der Derivation ist sprachhistorisch begründet. Nur hier anscheinend nicht. Und da sträuben sich bei mir auch alle rasierten Haare, wenn ich das lese oder höre!

            Adiou.

            --
            Ich bin eigentlich ganz anders, aber ich komme so selten dazu. - Ödön von Horwáth
            Ist Rudi Carrell Gott? Oder George Harrison Ford?
            Ich bin faul und das ist gut so.
            1. Ich schreibe meine CSS vom Anfang an so, dass ich die Spezifizität berücksichtige. So brauche ich Krücken wie !important nicht.

              Ist meine erste (reine) Ajax-Anwendung. Bisher hab ich Datenbanksysteme mit einfachen Frontends ohne Ajax programmiert. Und meine Hauptarbeit liegt eh nicht im Web.
              In Zukunft werd ich das sicher auch so machen wie du und das in die Planung mit aufnehmen.

              Diese Form der Derivation ist sprachhistorisch begründet. Nur hier anscheinend nicht. Und da sträuben sich bei mir auch alle rasierten Haare, wenn ich das lese oder höre!

              Ok, dann hab ichs richtig verstanden aber vorher nicht verstanden, dass ich es richtig verstanden hab *g*

              1. Bounjoun Multi,

                Ist meine erste (reine) Ajax-Anwendung. Bisher hab ich Datenbanksysteme mit einfachen Frontends ohne Ajax programmiert. Und meine Hauptarbeit liegt eh nicht im Web.
                In Zukunft werd ich das sicher auch so machen wie du und das in die Planung mit aufnehmen.

                Ich habe eine JavaScript-Anwendung geschrieben (die aber nicht veröffentlichungsreif ist), die vom Seitenautor mittels eben JavaScripts auf (mir) fremden Seiten mit (mir) nicht bekannten, mehr oder weniger gut geschriebenen Stylesheets eingebunden werden soll (ein Social Bookmarking Service). Dafür muss ich ganze Teile des Stylesheets reseten, damit die CSS-Anweisungen funktionieren.

                Das funktioniert aber so, dass es der Webseitenbesucher bzw. -autor nicht merkt. Beinflußt werden nur die Teile, die mein JavaScript dynamisch einfügt.

                Spezifizität ist ein Segen. Wenn man sie konsequent berücksichtigt und jede Zeile des Stylesheets entsprechend schreibt.

                Ok, dann hab ichs richtig verstanden aber vorher nicht verstanden, dass ich es richtig verstanden hab *g*

                Also Comprehension und nicht Compression... ;) Irgendwann fällt die deutsche Sprache mit ihrer seltsamen, zum Teil auch sehr neumodischen Silbenverbrennung auf die Schnauze ;)

                Adiou.

                --
                Ich bin eigentlich ganz anders, aber ich komme so selten dazu. - Ödön von Horwáth
                Ist Rudi Carrell Gott? Oder George Harrison Ford?
                Ich bin faul und das ist gut so.
            2. Hallo,

              Englisch: specificity
              Französisch: spécificité

              Englisch: adaptation
              Französisch: adaptation

              Diese Form der Derivation ist sprachhistorisch begründet.

              Das mag sein. Eine Sprache ändert sich aber mit der Zeit. Die Sprachwissenschaft schreibt nicht vor, wie eine Sprache für immer und ewig zu sein hat, sondern beschreibt nur, wie sie ist. Eine bekannte Regel ist die, dass sich das Einfachere gegenüber dem Komplizierteren mit der Zeit durchsetzt. Französisch kann nun wirklich nicht als Musterbeispiel für eine Sprache mit einfachen Regeln gelten, englisch schon eher.

              Wozu – außer wegen der Sprachgeschichte – sollten die zusätzlichen Silben in "Adaptation" oder "Spezifizität" denn gut sein? Als Schikane oder zum Angeben? Verständlich sind die Wörter auch ohne diese unnötigen Silben, und ich würde es jedenfalls begrüßen, wenn sich die einfachere Variante durchsetzt.

              Ciao, Don P

              1. Hi,

                Wozu – außer wegen der Sprachgeschichte – sollten die zusätzlichen Silben in "Adaptation" oder "Spezifizität" denn gut sein?

                zur Unterscheidung verschiedener Bedeutungsnuancen.
                "Spezifität" meint normalerweise nur die Tatsache an sich, dass etwas spezifisch, also besonders ist. "Spezifizität" beschreibt dagegen den Grad der Besonderheit als quasi-quantitative Aussage. Ganz ähnlich verhält es sich mit den Wörtern "Effektivität" und "Effizienz".

                In anderen Fällen bezeichnet man mit minimal unterschiedlichen Worten entweder den Vorgang oder den Zustand/das Ergebnis, z.B. "Rationierung" und "Ration". Auch die eine Silbe, die "Steigerung" von "Steigung" unterscheidet, ist durchaus sinnvoll.

                Beim Beispiel der Adaption (im Deutschen) ist es nicht ganz so klar, aber im Englischen beschreibt "adaption" das Ergebnis eines Anpassungsvorgangs, "adaptation" den Vorgang selbst.

                Als Schikane oder zum Angeben? Verständlich sind die Wörter auch ohne diese unnötigen Silben

                Ja, meist geht der Bedeutungsunterschied aus dem Kontext hervor. Leider gibt es aber auch Fälle, in denen eine Unterscheidung von Zustand/Eigenschaft und Vorgang anhand der Wortform wünschenswert wäre, wie etwa "Öffnung" oder "Markierung".

                "Du, Schatz, der Vortrag über die Entfernung der Sterne war ja superinteressant. Nur eins habe ich immer noch nicht verstanden: Wie entfernt man sie nun wirklich?"

                Ciao,
                 Martin

                --
                Ein Ehepaar beim Sex. Sie fragt ihn: "Woran denkst du gerade?" - Er antwortet: "Kennste sowieso nicht."
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          2. Om nah hoo pez nyeetz, Multi!

            Wenn ich aber ohne !importent arbeite, müsste ich meine komplette CSS-Struktur wieder umwerfen, da die meisten Elemente per ID ihre Eigenschaften zugewiesen bekommen.

            Nein.

            Folgendes HTML:

            <html>
              <body>
                <p id="eins">
            

            folgende (und noch weitere) Selektoren sprechen mit unterschiedlicher Spezifität (hier aufsteigend) das p-Element an:

            #eins
            p#eins
            body p#eins
            html body p#eins
            

            Matthias

            --
            1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
            1. Om nah hoo pez nyeetz, Matthias Apsel!

              Jetz hab' ich's doch vergessen: Es gibt keine CSS-Klassen. Klassen sind ein Konzept von HTML, die mit dem Klassenselektor angesprochen werden können.

              Matthias

              --
              1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
            2. <html>

              <body>
                  <p id="eins">

              
              >   
              > folgende (und noch weitere) Selektoren sprechen mit unterschiedlicher Spezifität (hier aufsteigend) das p-Element an:  
              >   
              > ~~~css
              
              #eins  
              
              > p#eins  
              > body p#eins  
              > html body p#eins
              
              

              Da hab ich ja das Problem.  mein CSS sieht so aus:

              .act {background-color: #0F0;}

              liegt also in der Spezifität am Ende deiner Liste oben. Da ich per Scriptacoulus aber nur eine Klasse (ja, es gibt keine Klassen in CSS, aber du weisst, was ich meine ;)) zuweisen und dahin morphen.

              Ich hab das jetzt aber so gelöst, dass ich den Hintergrund von Anfang an in einer Klasse definiere und diese Klasse bei der initialisierung der Anwendung dynamisch allen nötigen Elementen zuweise. Dadurch kann ich den Hintergrund jederzeit überschreiben.
              Vermutlich mach ich das noch mit dem Rest der Farbdefinitionen, da das CSS damit kleiner wird und Farbanpassungen dadurch einfacher werden.