Peter Mairhofer: Schriftgöße relativ verkleinern

Hi,

Kann ich die Schriftgöße relativ - bezogen auf die *derzeitige* Größe irgendwie ändern?

Ich hab ein komplexes Dokument und möchte "auf einen Schlag" die gesamte Schriftgröße im Dokument um z.B. 20% verringern.

Selfhtml sagt aber zu bei font-size: "Prozentwerte beziehen sich auf die Schriftgröße des Elternelements."

Ist das möglich?

LG
Peter

  1. Grüße,
    ja zB - wenn du konsequent %-angaben machst und dann mit dem font-size bei body spielst
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
    1. Hi,

      ja zB - wenn du konsequent %-angaben machst und dann mit dem font-size bei body spielst

      Das ist das Problem - das kann ich nicht. Ich binde externen HTML Code ein auf den ich keinen Einfluss habe.

      Jetzt möcht ich eben alles z.B. um 20% verkleinern, gegenüber dem ist-Zustand.

      Ich hab mir sowas ähnliches wie

        
      *  
      {  
        font-size: -10% !important;  
      }  
      
      

      oder so vorgestellt, nur das ist eben lt. Selfhtml nicht das was ich will.

      LG
      Peter

      1. Hi,

        ja zB - wenn du konsequent %-angaben machst und dann mit dem font-size bei body spielst

        Das ist das Problem - das kann ich nicht. Ich binde externen HTML Code ein auf den ich keinen Einfluss habe.

        Und darin sind die Elemente mit inline-Styles formatiert, oder wie?

        Jetzt möcht ich eben alles z.B. um 20% verkleinern, gegenüber dem ist-Zustand.

        Die (proprietäre) zoom-Eigenschaft unterstützt m.W. nur der IE.

        Ich hab mir sowas ähnliches wie

        {
          font-size: -10% !important;
        }

        
        > oder so vorgestellt,  
          
        Wenn auf das Fremd-HTML spezifischere Selektoren wirken, kommst du mit einem so allgemeinen Selektor wie \* natürlich nicht weiter.  
        Und wenn's inline-Styles sind, dann gar nicht, die haben nämlich höchste Spezifität. Dann bleibt dir höchstens noch, per JavaScript direkt die CSS-Eigenschaften für alle betroffenen Elemente zu manipulieren.  
          
        
        > nur das ist eben lt. Selfhtml nicht das was ich will.  
          
        Das ist !important für solche Zwecke sowieso eher weniger; das ist mehr für User-Stylesheets gedacht.  
          
        MfG ChrisB  
          
        
        -- 
        “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
        
        1. Hi,

          Das ist das Problem - das kann ich nicht. Ich binde externen HTML Code ein auf den ich keinen Einfluss habe.

          Und darin sind die Elemente mit inline-Styles formatiert, oder wie?

          Genau :-(

          Die (proprietäre) zoom-Eigenschaft unterstützt m.W. nur der IE.

          Danke; das wäre nicht das Problem, muss nur unter IE >= 6 laufen.

          Ich habs bereits ausprobiert, das hilft mir bei meinem Problem nicht. Die kleinere Schrift soll nämlich genau auf @media print {} wirken und daher weiss ich nicht auf welchen Wert ich den zoom-Wert stellen soll.

          Wenn auf das Fremd-HTML spezifischere Selektoren wirken, kommst du mit einem so allgemeinen Selektor wie * natürlich nicht weiter.

          Hmm :-(
          Ok, dann hätte ich halt

            
          body, p, table, td, ...  
          {  
          }  
          
          

          oder so genommen ...

          Dann bleibt dir höchstens noch, per JavaScript direkt die CSS-Eigenschaften für alle betroffenen Elemente zu manipulieren.

          An das hab ich auch schon gedacht. Aber das ist faktisch unmöglich. Vor allem müsste ich nach dem Drucken die ganzen Änderungen wieder rückgängig machen...

          [...]
          Das ist !important für solche Zwecke sowieso eher weniger; das ist mehr für User-Stylesheets gedacht.

          Ich weiss eh, aber in meinem Fall ist das egal, jeder Hack ist mir recht (keine Angst, die Seite schicke ich nicht in die freie Wildbahn und wird nur mit dem IE angezeigt).

          Ich verwende ausserdem !important bereits um gewisse Dinge zu überschreiben (z.B. width: 100% bei tables).

          LG
          Peter

          1. Hi,

            Die (proprietäre) zoom-Eigenschaft unterstützt m.W. nur der IE.

            Ich habs bereits ausprobiert, das hilft mir bei meinem Problem nicht. Die kleinere Schrift soll nämlich genau auf @media print {} wirken und daher weiss ich nicht auf welchen Wert ich den zoom-Wert stellen soll.

            Welche Relevanz soll denn das Medium dabei haben?

            Dann bleibt dir höchstens noch, per JavaScript direkt die CSS-Eigenschaften für alle betroffenen Elemente zu manipulieren.

            An das hab ich auch schon gedacht. Aber das ist faktisch unmöglich. Vor allem müsste ich nach dem Drucken die ganzen Änderungen wieder rückgängig machen...

            Du könntest versuchen, die Inline-Styles per JavaScript zu entfernen;
            und dann dynamisch Stylesheet-Regeln anzulegen, die für die gewünschte Formatierung sorgen. (Bzw. dann könnte man auch wieder bereits vorhandene Regeln zur Anwendung kommen lassen.)

            MfG ChrisB

            --
            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          2. @@Peter Mairhofer:

            nuqneH

            Ich habs bereits ausprobiert, das hilft mir bei meinem Problem nicht.

            Was genau ist dein Problem?

            Die kleinere Schrift soll nämlich genau auf @media print {} wirken und daher weiss ich nicht auf welchen Wert ich den zoom-Wert stellen soll.

            Du willst die Schriftgröße bei der Druckausgabe genau festlegen? Geht nicht. Du weißt nicht, ob/wie der Nutzer Druckausgaben skaliert hat (Druckvorschau > Druckgröße ändern).

            (Und auch PDF lassen sich skalieren.)

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
        2. @@ChrisB:

          nuqneH

          Und wenn's inline-Styles sind, dann gar nicht, die haben nämlich höchste Spezifität. Dann bleibt dir höchstens noch, per JavaScript direkt die CSS-Eigenschaften für alle betroffenen Elemente zu manipulieren.

          Natürlich kann man Inline-Styles auch ohne JavaScript einzusetzen mit !important-Deklarationen im Stylesheet überschreiben:

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
          <html xmlns="http://www.w3.org/1999/xhtml">  
            <head>  
              <title>TEST</title>  
              <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>  
              <style type="text/css">[code lang=css]p { color: green !important }
          ~~~</style>  
            </head>  
            <body>  
              <p style="color: red">rot oder grün?</p>  
            </body>  
          </html>[/code]  
            
          Es sei denn, die Inline-Styles sind selbst !important:  
            
          ~~~html
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
          <html xmlns="http://www.w3.org/1999/xhtml">  
            <head>  
              <title>TEST</title>  
              <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>  
              <style type="text/css">[code lang=css]p { color: green !important }
          ~~~</style>  
            </head>  
            <body>  
              <p style="color: red !important">rot oder grün?</p>  
            </body>  
          </html>[/code]  
            
            
          Dass '`* { font-size: -10% !important }`{:.language-css}' keinerlei Wirkung zeigt, liegt am ungültigen Wert. [[CSS21 §15.7](http://www.w3.org/TR/CSS21/fonts.html#font-size-props)]  
            
            
          
          > [!important] ist mehr für User-Stylesheets gedacht.  
            
          Sagt wer?  
            
          Qapla'
          
          -- 
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.  
          (Mark Twain)