Vera: einzelne HTML-Elemente formatieren (<a>-Tag)

Hallo Forum

Ich hab da ein spezielles Problem, bei dem mir Selfhtml  und auch andere Quellen bisher nicht weiterhelfen konnten.

Ich habe ein phtml-Template, in das per Script unterschiedliche Dateien eingelesen werden, auf die ich keinen Zugriff habe.
Diese Dateien haben ein eigenes css und überscheiben mein css für das Template. Also muss ich die entsprechenden html-Elemente einzeln per css formatieren.

Soweit funktioniert das auch, ausser bei der Linkformatierung.

Ich kann innerhalb des <a>-Tags nur einmal eine Schriftfarbe angeben und kann keine Unterscheidung zwischen "link" und "vlink" vornehmen.

Das bedeutet, dass besuchte Links sich nicht von unbesuchten unterscheiden lassen. Dieser Effekt ist aber nicht erwünscht.

Beispiel:

<a style="color: #CC0000;" href="xxx.html">

Gibt es doch eine Möglichkeit, dem  visited link eine andere Farbe zu geben, obwohl das jeweilige <a>-Element einzeln direkt formatiert werden muss?

Bin für jeden Hinweis dankbar.

Gruss

Vera

  1. Hallo Vera,

    <a style="color: #CC0000;" href="xxx.html">

    würde des nicht gehen, im <a class="veras" ...>

    anzugeben und dann in Deinem Script die eigene Klasse anzugeben?

    Grüße

    Chris (C)

    1. Hallo Chris

      würde des nicht gehen, im <a class="veras" ...>

      anzugeben und dann in Deinem Script die eigene Klasse anzugeben?

      Ich schrieb ja, dass das eben nicht geht, weil das css aus dem
      Schnipsel, der in die Seite eingelesen wird, meine css-Angaben komplett überschreibt. Andernfalls gäbe es das Problem gar nicht,
      da ja für alle Link-Versionen Angaben im css stehen.

      Trotzdem Danke

      Gruss

      Vera

      1. Hallo nochmal Vera,

        wie findet denn das Einlesen Deiner Daten in die Seite statt?

        Du hast also das Recht, dort Links zu hinterlassen? Dann kann es doch aber auch funktionieren, direkt vor dem Link eine neue Style-Angebabe zu machen. Die überschreibt doch die vorherige. Stimmt natürlich dann anschließend nichts mehr in dem Form. Darum will man sowas ja uch nicht so gerne und parst die Usereingaben exte gegen <style>-tags.

        Wenn das bei Dir auch so ist, solltest Du es sowieso lieber lassen, etwas umzudefinieren.

        Grüße

        Chris (C)

        1. Hallo Chris

          wie findet denn das Einlesen Deiner Daten in die Seite statt?

          Du hast also das Recht, dort Links zu hinterlassen? Dann kann es doch aber auch funktionieren, direkt vor dem Link eine neue Style-Angebabe zu machen. Die überschreibt doch die vorherige. Stimmt natürlich dann anschließend nichts mehr in dem Form. Darum will man sowas ja uch nicht so gerne und parst die Usereingaben exte gegen <style>-tags.

          Ich glaube, ich habe mich nicht klar ausgedrückt.

          Es sind nicht MEINE Daten, die in eine fremde Datei eingelesen werden. Es ist umgekehrt.

          Ich habe eine Seite, in die wird von einer fremden Seite Inhalte eingelesen. Es handelt sich dabei um einen Seminarshop.

          Meine eigene Seite hat ein externes css, das von den css-Angaben der fremden Inhalte überschrieben wird.

          Die Links, um die es geht, sind meine eigenen Links im Template, die normalerweise durch das eigene css formatiert würden, wenn da nicht der fremde Inhaltsschnipsel...

          Gruss

          Vera

          1. Und nochmal hallo Vera,

            dann musst Du eben die Seite nach dem Einlesen parsen und die Styles entfernen und gegen Deine eigenen ersetzen, das geht ja schließlich.

            Mit einem preg_match_all() kannst Du Dir ja eine Positions- und Trefferliste für alles      style="...."    zusammenstellen und die dann austauschen oder entfernen.

            Du musst aus der Seite ja sowieso <html> <body> und Co entfernen, wenn Du sie in Deine Seite eistanzen willst.

            Grüße

            Chris (C)

  2. Gibt es doch eine Möglichkeit, dem  visited link eine andere Farbe zu geben, obwohl das jeweilige <a>-Element einzeln direkt formatiert werden muss?

    Ein Arbeitsentwurf des W3C sieht vor, dass man :visited, ... auch im style-Attribut verwenden kann. Ich kenne allerdings keinen Browser der das schon unterstützt. Das ist im Prinzip auch gut so, Arbeitsentwürfe sollten nur in experimentellen Anwendungen implementiert werden. Wenn du keine Möglichkeit hast, <link> oder <style> einzusetzen, bleibt dir nur noch JavaScript.

    Wie dem auch sei, das ist ein soziales Problem, kein technisches. Wenn in diesem System deine Regeln überschrieben werden, dann ist das entweder von den Verantwortlichen dafür explizit gewünscht und du sollst nicht versuchen das zu umgehen, oder es ist ein Fehler den es dann zu beheben gilt.

    1. Hallo Björn

      Danke für Deine Antwort, auch wenn ich lieber was anderes gelesen hätte  ;-)

      Ein Arbeitsentwurf des W3C sieht vor, dass man :visited, ... auch im style-Attribut verwenden kann. Ich kenne allerdings keinen Browser der das schon unterstützt. Das ist im Prinzip auch gut so, Arbeitsentwürfe sollten nur in experimentellen Anwendungen implementiert werden. Wenn du keine Möglichkeit hast, <link> oder <style> einzusetzen, bleibt dir nur noch JavaScript.

      Schade und wo kann ich nachlesen, wie man das mit JavaScript macht?

      Wie dem auch sei, das ist ein soziales Problem, kein technisches. Wenn in diesem System deine Regeln überschrieben werden, dann ist das entweder von den Verantwortlichen dafür explizit gewünscht und du sollst nicht versuchen das zu umgehen, oder es ist ein Fehler den es dann zu beheben gilt.

      Leider kann ich nicht zur Problemlösung beitragen, sondern muss sehen, wie ich _mit_ dem Problem zurechtkomme.

      Gruss

      Vera

  3. Hi,

    Ich habe ein phtml-Template, in das per Script unterschiedliche Dateien eingelesen werden, auf die ich keinen Zugriff habe.
    Diese Dateien haben ein eigenes css und überscheiben mein css für das Template. Also muss ich die entsprechenden html-Elemente einzeln per css formatieren.

    Versuch doch mal, dein CSS in einer zantralen Datei abzulegen, diese einzubinden und die einzelnen Formate darin mit !important zu kennzeichnen:

    body    { background: white !important;
                 color: black !important;
                 font-family: "Example Sans", sans-serif !important;
    }

    Siehe auch http://www.heise.de/ix/artikel/2003/03/050/
    Weiss allerdings nciht, in welchen Browsern das funktioniert.

    Oder filtere doch das CSS der anderen Dateien per PHP raus...

    HTH

    wunderwarzenschwein

    --
    ss:} zu:$ ls:} fo:| de:] va:) ch:? sh:( n4:# rl:? br:> js:| ie:( fl:{ mo:)
    1. Hi wunderwarzenschwein  :-)

      Das mit dem !important funzt - klasse und vielen Dank!

      »» body    { background: white !important;

      color: black !important;
                   font-family: "Example Sans", sans-serif !important;
      }

      Siehe auch http://www.heise.de/ix/artikel/2003/03/050/

      Gruss

      Vera