Steffen Flämig: Text in einem <div> vertikal zentrieren

Hallo,

ich möchte in einem <div> welches höher als aktuelle Font ist den Text vertikal zentrieren:

-div----
|      |
| Text |
|      |
-/div---

Ich dachte dazu gibts:
vertical-align:middle;

Mein Text bleibt aber beharlich oben kleben :-(.

Danke für einen Tipp.
Gruß

Steffen

  1. vertical-align:middle;

    ^^ funktioniert nicht bei DIV
    Funktionieren sollte:
    line-height: [Höhe deines DIVs];

    :]

    1. Hallo,

      Funktionieren sollte:
      line-height: [Höhe deines DIVs];

      Aber nur so lange es keinen Zeilenumbruch gibt. Eine bessere Lösung kenne ich aber leider auch nicht…

      mfg. Daniel

      1. Hallo!

        Funktionieren sollte:
        line-height: [Höhe deines DIVs];

        Aber nur so lange es keinen Zeilenumbruch gibt. Eine bessere Lösung kenne ich aber leider auch nicht…

        Mit display und vertical-align funktioniert es. Allerdings nicht im IE. Nicht mal der 7er kann es :-O

          
        div#test{  
          height: 200px;  
          display: table-cell;  
          vertical-align: middle;  
          background-color: #FF0000;  
        }  
        
        

        ciao, ww

        --
        sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
        1. Hallo,

          Funktionieren sollte:
          line-height: [Höhe deines DIVs];

          Aber nur so lange es keinen Zeilenumbruch gibt. Eine bessere Lösung kenne ich aber leider auch nicht…

          Mit display und vertical-align funktioniert es. Allerdings nicht im IE. Nicht mal der 7er kann es :-O

          div#test{
            height: 200px;
            display: table-cell;
            vertical-align: middle;
            background-color: #FF0000;
          }

            
          Muss sich die Tabellen-zelle nicht innerhalb einer Tabelle (ein Element mit display:table) befinden?  
            
          mfg. Daniel
          
          -- 
          [Experten raten von der Verwendung des Internet Explorers ab!](http://web.oesterchat.com/internet-explorer/)  
          [Mein SELF-stylesheet](http://danielrichter.da.funpic.de/SELFForumsCSS.html) | [Darum Firefox!](http://www.firefox-love.de/)  
          [Selfcode](http://forum.de.selfhtml.org/cgi-bin/selfcode.pl): [ie:{ fl:( br:> va:) ls:& fo:) rl:( n4:# ss:| de:> js:) mo:} zu:}](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%26+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%7C+de%3A%3E+js%3A%29+mo%3A%7D+zu%3A%7D)
          
          1. Hallo!

            Muss sich die Tabellen-zelle nicht innerhalb einer Tabelle (ein Element mit display:table) befinden?

            Das weiß ich nicht. Wäre aber interessant zu wissen.

            ciao, ww

            --
            sh:(  fo:|  ch:~  rl:(  br:>  n4:~  ie:%  mo:)  va:)  de:]  zu:)  fl:(  ss:|  ls:~  js:)
            1. Hallo,

              Muss sich die Tabellen-zelle nicht innerhalb einer Tabelle (ein Element mit display:table) befinden?

              Das weiß ich nicht. Wäre aber interessant zu wissen.

              Gut, dann die Antwort:
              Ja. Eine Tabellenzelle (table-cell) wird erst wirksam, wenn sie sich innerhalb einer Tabelle (table) befindet. Im Gegensatz zu richtigen Tabellen, benötigt man aber nicht zwingend eine Tabellenreihe (table-row).

              mfg. Daniel

              1. Hi,

                Muss sich die Tabellen-zelle nicht innerhalb einer Tabelle (ein Element mit display:table) befinden?

                Das weiß ich nicht. Wäre aber interessant zu wissen.

                Gut, dann die Antwort:
                Ja. Eine Tabellenzelle (table-cell) wird erst wirksam, wenn sie sich innerhalb einer Tabelle (table) befindet.

                Falsch.

                Falls das Elternelement eines Elements mit display table-xxx nicht das entsprechend nächsthöhere in der Tabellenhierarchie ist, wird eine entsprechende Box implizit eingefügt.

                Siehe http://www.w3.org/TR/CSS21/tables.html#anonymous-boxes

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                Schreinerei Waechter
                O o ostern ...
                Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hallo,

    ich möchte in einem <div> welches höher als aktuelle Font ist den Text vertikal zentrieren:

    -div----
    |      |
    | Text |
    |      |
    -/div---

    Frommer Wunsch :)

    Ich dachte dazu gibts:
    vertical-align:middle;

    Stimmt. Gilt aber nur für Tabellenzellen. Nimm anstelle des DIVs doch einfach ein TABLE-Element:

      
    <table id="vAligned"><tbody><tr><td>Text</td></tr></tbody></table>  
    
    

    "middle" sollte da die Voreinstellung sein. Ansonsten per CSS:

      
    #vAligned td {vertical-align:middle}  
    
    

    Danke für einen Tipp.

    gg
    T.

    1. Hallo,

      <table id="vAligned"><tbody><tr><td>Text</td></tr></tbody></table>

      
      >   
      > "middle" sollte da die Voreinstellung sein. Ansonsten per CSS:  
      >   
      > ~~~css
        
      
      > #vAligned td {vertical-align:middle}  
      > 
      
      

      Warum so umständlich?

      HTML:
      <div class="mittig"><p>Text</p></div>

      CSS:

        
      .mittig {display:table;}  
      .mittig p {display:table-cell; vertical-align:middle;}
      

      Ist zwar auch nicht optimal, aber immer noch besser, als den Code mit unnötigen Tabellen aufzublähen.

      mfg. Daniel

      1. Warum so umständlich?

        HTML:
        <div class="mittig"><p>Text</p></div>

        CSS:

        .mittig {display:table;}
        .mittig p {display:table-cell; vertical-align:middle;}

        
        >   
        > Ist zwar auch nicht optimal, aber immer noch besser, als den Code mit unnötigen Tabellen aufzublähen.  
          
        Im meinem Fall wird der HTML-Code komplexer, in Deinem der CSS-Code. Wenn's öfter vorkommen soll, würde ich Deine Methode vorziehen. Bei einmaligem Vorkommen eher meine.  
          
        mfg  
        T.
        
        1. Hallo.

          Im meinem Fall wird der HTML-Code komplexer, in Deinem der CSS-Code. Wenn's öfter vorkommen soll, würde ich Deine Methode vorziehen. Bei einmaligem Vorkommen eher meine.

          Letzteres aber nur, wenn tabellarische Daten ausgezeichnet werden sollen, wovon bei einer einzigen Zelle kaum auszugehen ist.
          MfG, at

  3. ich möchte in einem <div> welches höher als aktuelle Font ist den Text vertikal zentrieren:

    Da mich das Thema gerade selbst betrifft habe ich Google auch noch ein wenig angeworfen und folgenden Workaround gefunden:

    http://www.jakpsatweb.cz/css/css-vertical-center-solution.html

    Vielleicht interessiert Dich das auch? Ich werde es heute abend zumindest mal ausprobieren...