tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von javaDeveloper2011
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
580
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    682
    Nachdem ich gerade (besser spät als nie) herausgefunden habe, dass das font Element als veraltet gilt und man stattdessen <span style="..."> verwenden soll stehe ich vor einem Problem, weil ich die richtige Entsprechung nicht finde.
    Ich habe sogar den Eindruck, dass die Browser in <span> andere default Schriftarten verwenden als in <font>.

    Darum die Frage: Gibt es irgendwo eine Liste, wo man das abgleichen kann?

    Wenn in der alten Version steht

    <font size="2"><b>Text</b></font>

    Welcher CSS style ergibt dieselbe Anzeige?

    Ganz andere Frage:
    Meine Webseite enthält Unmengen von <font>, die alle zu ändern wäre unglaublich viel Arbeit.
    Im Moment scheinen die Browser das ja noch zu unterstützen, aber wie lange noch?
     

  2. #2
    Avatar von Jan-Frederik Stieler
    Jan-Frederik Stieler Jan-Frederik Stieler ist offline JFS - aka DirtyWorld
    tutorials.de Moderator
    Registriert seit
    Nov 2003
    Ort
    Darmstadt
    Beiträge
    4.934
    Blog-Einträge
    1
    Hi,
    also das &lt;font&gt; ist als „deprecated“ eingestuft, heißt es ist missbilligt und nicht nicht erlaubt.
    Wie lang dies noch unterstützt wird, ist schwer zu sagen, ich denke mal das dies bis zum Sankt Nimmerleinstag unterstützt wird. Den die Browser müssen ja HTML 4 wegen der Rückwertskompatibilität dies weiterhin unterstützen und somit auch die HTML-Elemente welche aufgrund eines verbessert umgesetzten Struktur/Aussehen Trennen Konzeptes.
    Aber bevor du anfängst und alles mit Inlinestyles versiehst fang doch an mal CSS richtig zu lernen und deine Styles in eine eigene Datei zu packen. Die Überflüssigen <font>-Elemente kannst du ja per Suchen und Ersetzen auf einmal löschen.

    Nun zu deiner Frage welches CSS-Style die gleiche Ausgabe erzeugt.
    Da die Angaben im Font-Element relativ auf die Einstellungen im Browser bezieht wäre im Stylesheet die Größenangabe em die richtige (http://de.selfhtml.org/css/formate/wertzuweisung.htm)

    Ich habe sogar den Eindruck, dass die Browser in <span> andere default Schriftarten verwenden als in <font>
    Nein, soweit dies nicht vom Nutzer bzw. einem Stylesheet vorgegeben wird.

    Viele Grüße
     
    Dirt is my World
    www.janstieler.de coming soon!
    Xing Profil (OpenBC)
    del.icio.us Profil
    flickr Profil

    Portfolio

    Bitte bewerte mich wenn ich dir weitergeholfen habe. Und makiere dein Beitrag als erledigt wenn das Problem geklärt wurde.
    Information zum neuen Bewertungsmodell.

  3. #3
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    682
    Danke für die Antwort.
    Zumindest bin ich ein wenig beruhigt, dass meine (15 Jahre alte) Webseite auch ohne Runderneuerung vorläufig noch richtig angezeigt wird.

    Ich weiss, dass ich CSS in eine separate Datei packen kann, aber am Arbeitsaufwand ändert das nichts, eher im Gegenteil.
    Übersichtlicher hin oder her, wenn ich im Moment sowas habe

    Code :
    1
    2
    3
    4
    
    <p>
    <font color="red" size="5"><b>Text</b></font><br>
    <font color="blue">Text</font>
    </p>

    dann kann ich nicht einfach die font TAGs löschen und im Stylesheet <p> eine fest definierte Schriftfarbe geben.
    Da muss ich entweder <span> rein machen, oder sämtliche <p> und <td> usw. in Klassen einteilen, die alle im Stylesheet definieren und dann brauche ich immer noch diverse <span>, die auch wieder in Klassen eingeteilt werden müssen, sobald ein Absatz oder eine Tabellenzelle mehr als eine Schriftgrösse oder -farbe braucht.
     

  4. #4
    Avatar von javaDeveloper2011
    javaDeveloper2011 javaDeveloper2011 ist offline Mitglied Brokat
    Registriert seit
    Feb 2011
    Beiträge
    445
    Blog-Einträge
    5
    Hi,

    ich denke bei deinem Problem hilft höchstens ne RegEx.

    Ich hab dir mal nen kleinens Java-Programm geschrieben.
    Dabei muss aber folgendes erfüllt sein:
    • <font>, nicht <FONT>
    • size-Attribut UND/ODER color-Atribut gesetzt
    Mir ist klar, dass man die size-Angaben eigentlich nicht in css-font-size angaben in px übersetzen kann, aber was anderes ist mir nicht eingefallen.
    Ich habe die Werte so gewählt dass es im Google Chrome mit Standard-Einstellungen gleich aussieht.

    Hier der Quellcode:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.File;
    import java.io.BufferedWriter;
    import java.io.OutputStreamWriter;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.FileNotFoundException;
     
    public class CSSRenovierer {
     
        public static void main(String[] args) {
            if(args.length == 0)
                System.err.println("Usage: java CSSRenovierer files...");
            else{
                for(int i=0; i<args.length; i++){
                    try{
                        // Eilesen der Datei
                        BufferedReader reader = new BufferedReader(new FileReader(args[i]));
                        String line;
                        StringBuilder sb = new StringBuilder();
                        while((line = reader.readLine()) != null){
                            sb.append(line);
                            sb.append(System.getProperty("line.separator"));
                        }
                        reader.close();
                        String content = sb.toString();
                        content = content.substring(0, content.length()-System.getProperty("line.separator").length());
                        // ERSÄTZUNGEN
                            int[] modernSizes = {11, 13, 16, 19, 24, 33, 47};
                            // color & size
                            for(int j=0; j<modernSizes.length; j++)
                                content = content.replaceAll("<font(\\s+)color=\"(.*?)\"\\s+size=\"" + (j+1) + "\">(.*?)</font>", "<span$1style=\"color: $2; font-size: " + modernSizes[j] + "px;\">$3</span>");
                            // size
                            for(int j=0; j<modernSizes.length; j++)
                                content = content.replaceAll("<font(\\s+)size=\"" + (j+1) + "\">(.*?)</font>", "<span$1style=\"font-size: " + modernSizes[j] + "px;\">$2</span>");
                            // color
                            content = content.replaceAll("<font(\\s)color=\"(.*?)\">(.*?)</font>", "<span$1style=\"color: $2;\">$3</span>");
                        // Speichern
                        File f = new File("renovierer");
                        if(!f.exists()) f.mkdir();
                        BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("renovierer/" + args[i])));
                        out.write(content);
                        out.close();
                    }
                    catch(FileNotFoundException ex){
                        System.err.println(ex);
                    }
                    catch(IOException ex){
                        System.err.println(ex);
                    }
                }
            }
            
        }   
     
    }

    Das ausführbare Programm ist im Anhang.
    Ruf es dann so auf:
    Code :
    1
    
    java -jar CSSRenovierer.jar file1.html file2.html file3.html

    Deine Dateien werden selbstverständlich nicht überschrieben, sondern Kopien in ein Unterverzeichnis "renoviert" erstellt!
    Die Datei CSSRenovierer.jar MUSS IMMER im Verzeichnis der zu bearbeitenden HTML-Dateien sein.
    Angehängte Dateien Angehängte Dateien
    Thomasio bedankt sich. 

  5. #5
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    682
    Wow, da hast du dir richtig viel Arbeit gemacht, ich sage ganz herzlich danke schön.

    So ganz passt es nicht für mich, weil da noch einiges mehr zu bearbeiten ist, z.B. Links, wo ich <a href="..."><font ...> drin habe, und wenn ich schon dabei bin, sollten auch die <b> übersetzt werden in font-weight, aber das ist mit einem Programm kaum zu machen, spätestens wenn innerhalb von einem <font> TAG mehrmals <b> </b> vorkommt, oder auch andersrum.

    Mittlerweile habe ich noch rausgefunden, dass size 2,3,4,5,6,7 in CSS font-size: small, normal, large, x-large, xx-large entspricht.

    Aber du hast mir einen guten Ansatz gegeben, den übersetze ich mir nach C++, da kann ich auch gleich eine Schleife einbauen, die alle Dateien im Verzeichnis samt Unterverzeichnisse selber sucht, sonst müsste ich über 500 Dateinamen an den Aufruf hängen.

    Nochmal vielen Dank.
     

  6. #6
    Avatar von javaDeveloper2011
    javaDeveloper2011 javaDeveloper2011 ist offline Mitglied Brokat
    Registriert seit
    Feb 2011
    Beiträge
    445
    Blog-Einträge
    5
    Hi,

    warum soll denn <b>...</b> --> <span style="font-weight: bold;">...</span> nicht funktionieren?

    Code java:
    1
    
    content = content.replaceAll("<b>(.*?)</b>", "<span style=\"font-weight: bold;\">$1</span>");
    ... sollte die Sache eigentlich erledigen, oder?

    Was ist das Problem bei den Links?
    - dass der default-style unterstrichen und blau ist?
    Wenn ja, dann füge doch einfach folgendes CSS hinzu:
    Code css:
    1
    2
    3
    4
    
    a{
        color: black;
        text-decoration: none;
    }
     

  7. #7
    Thomasio Thomasio ist offline Mitglied Platin
    Registriert seit
    Aug 2006
    Beiträge
    682
    Klar funktioniert das mit dem <b>, es war halt in deinem Code nicht drin, sprich werde ich einfügen.
    Geschickt wäre halt, wenn ich nicht 2 <span> brauche, wo ich <font ...><b>Text</b></font> habe.
    Mit den Links, das ist ähnlich, werde ich auch einfügen, weil ich da ja keinen extra <span> brauche, sondern den style gleich ins <a> rein machen kann.
    Aber das sind alles Kleinigkeiten, das schaffe ich schon.

    Fehlt nur die Schleife, die sämtliche Dateien und Unterverzeichnisse selber sucht, aber das habe ich in C++ schon in einem anderen Projekt gebraucht, sprich habe ich schon.
     

  8. #8
    Avatar von Jan-Frederik Stieler
    Jan-Frederik Stieler Jan-Frederik Stieler ist offline JFS - aka DirtyWorld
    tutorials.de Moderator
    Registriert seit
    Nov 2003
    Ort
    Darmstadt
    Beiträge
    4.934
    Blog-Einträge
    1
    Hi,
    Mittlerweile habe ich noch rausgefunden, dass size 2,3,4,5,6,7 in CSS font-size: small, normal, large, x-large, xx-large entspricht.
    und alle diese Werte sind relative Werte und beziehen sich auf das was der Benutzer im Browser eingestellt hat, was auch em macht.

    Nur so am Rande, Inline Stylesheets zerstören das Konzept der Trennung von Inhalt, Struktur und Aussehen.

    Viele Grüße
     
    Dirt is my World
    www.janstieler.de coming soon!
    Xing Profil (OpenBC)
    del.icio.us Profil
    flickr Profil

    Portfolio

    Bitte bewerte mich wenn ich dir weitergeholfen habe. Und makiere dein Beitrag als erledigt wenn das Problem geklärt wurde.
    Information zum neuen Bewertungsmodell.

Ähnliche Themen

  1. Problem mit Span
    Von retta im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 28.08.08, 13:21
  2. Span auslesen
    Von kleiner_floh im Forum Javascript & Ajax
    Antworten: 5
    Letzter Beitrag: 15.01.08, 15:05
  3. Bild an span
    Von garnixwisser im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 06.07.06, 14:37
  4. css span
    Von edi im Forum CSS
    Antworten: 6
    Letzter Beitrag: 03.07.03, 21:11
  5. span und div
    Von x12x13 im Forum Javascript & Ajax
    Antworten: 11
    Letzter Beitrag: 23.04.03, 21:11