2016-05-27 15 views
0

Ich weiß, dass diese Frage wurde mehrmals hier gestellt, fand aber keine richtige Antwort. Ich schaffte einen Workaround, um Div volle Höhe von TD zu machen. Aber es scheint unmöglich, den Text in der Mitte vertikal auszurichten. Irgendeine Idee wie kann ich das erreichen? Ich möchte, dass es reagiert. Ich meine, an allen Geräten zu arbeiten. Vielen Dank.Div volle Höhe von TD, mit Text vertikal Mitte

<tr> 
    <td> 
     Small text 
    </td> 
    <td class="" style="height: 1px; height: 100%"> 
     <div style="position: relative"> 
      <span class="centered-text"> A very long text that I want to be centered inside parent div and of course parent td.</span> 
     </div> 
    </td> 
</tr> 

Antwort

0

Ohne Ihren Codes zu sehen, es ist ein wenig schwierig, Ihnen eine genaue Antwort zu geben. Aber meine bevorzugte Methode zur Lösung dieses Problems, vor allem für ansprechende Lösungen, (solange Sie nicht brauchen, um alles unter IE9 unterstützt) ist die folgende:

.text-container { 
    position: relative; 
} 

.centered-text { 
    position: absolute; 
    top: 50%; 
    -webkit-transform: translateY(-50%); 
    -ms-transform: translateY(-50%); 
    transform: translateY(-50%); 
} 

Wenn es auch horizontal zentriert werden muss, verwenden die zusätzlich folgende und ersetzen die Eigenschaften verwandeln:

.centered-text { 
    left: 50%; 
    -webkit-transform: translate(-50%, -50%); 
    -ms-transform: translate(-50%, -50%); 
    transform: translate(-50%, -50%); 
} 

Edit: fiddle mit Position relativ aktualisiert, Raum zu füllen - zeigt endgültig voll zentriert Ergebnis.

+0

Danke. Normalerweise meide ich absolute Position, aber dieses Mal bin ich glücklich mit dieser Lösung. Prost. – csm86

+0

Kein Problem! Ich stimme generell zu. Meine übliche Faustregel ist, dass Sie, solange es einen relativen Elternteil im Flow gibt, die absolute Positionierung im Allgemeinen sicher verwenden können. –

+0

Ich hatte gerade ein anderes Problem. Wenn der Text centerd sehr lang ist, überlappt er den übergeordneten Container. Der Eltern-TD wird nicht erhöht. Ich habe die Frage mit html aktualisiert. – csm86

1

Versuchen Sie, die folgende CSS zu Ihrem div hinzu:

div{ 
    display: table-cell; 
    vertical-align: middle; 
} 

Das Display Attribut bewirkt, dass die div mehr wie eine Tabellenzelle verhalten, den Stil vertikale align Sinn wird eine Wirkung haben.

Beispiel: http://codepen.io/JasonGraham/pen/aZbdmy

+0

Danke für den Hinweis. Ich habe das versucht, aber display: table-cell lässt meine div. Höhe des Eltern-TD nicht zu. – csm86

+0

Entschuldigung, mein Missverständnis! Wenn Sie die div-Höhe beibehalten möchten, wähle ich eine ähnliche Lösung wie die von @ghost_dad oben angebotene Lösung. Zeigen Sie den relativen Text im übergeordneten Container mit "top" vertikal an. –

+0

div {Höhe: 100%; } lässt dein div das ganze Wahrheitselement füllen. Einfacher wäre dein text hier –

Verwandte Themen