1548 votes

Aligner verticalement du texte dans une div

J'essaie de trouver le moyen le plus efficace d'aligner le texte avec un div. J'ai essayé quelques trucs et aucun ne semble fonctionner.

 .testimonialText
        {
            position: absolute;
            left: 15px;
            top: 15px;
            width: 150px;
            height: 309px;
            vertical-align: middle;
            text-align: center;
            font-family: Georgia, "Times New Roman", Times, serif;
            font-style: italic;
            padding: 1em 0 1em 0;
        }
 

924voto

Robert Harvey Points 103562

Centrage Vertical en CSS
http://www.jakpsatweb.cz/css/css-vertical-center-solution.html

Résumé de l'Article:

Pour CSS2 navigateur, on peut utiliser display:table/display:table-cell pour le contenu du centre.

Exemple également disponible sur JSFiddle:

  <div style="display: table; height: 400px; overflow: hidden;">
     <div style="display: table-cell; vertical-align: middle;">
       <div>
         everything is vertically centered in modern IE8+ and others.
       </div>
     </div>
   </div>

Il est possible de fusionner des hacks vieux navigateur (IE6/7) dans des styles avec l'aide d' # pour masquer les styles de nouveaux navigateurs:

<div style="display: table; height: 400px; #position: relative; overflow: hidden;">
  <div style=
    " #position: absolute; #top: 50%;display: table-cell; vertical-align: middle;">
    <div style=" #position: relative; #top: -50%">
     everything is vertically centered
    </div>
  </div>
</div>

915voto

David Points 2285

Vous devez ajouter l'attribut line-height et cet attribut doit correspondre à la hauteur de la div. Dans ton cas:

 height: 309px;
line-height: 309px;
 

En fait, vous pourriez probablement supprimer complètement l'attribut height.

Cela ne fonctionne que pour une ligne de texte, alors faites attention.

672voto

Adam Tomat Points 1981

Mise À Jour - À L'Aide De Flexbox

Inline avec le maintien de ce post à jour avec la dernière technologie, voici un moyen beaucoup plus facile pour le centre de quelque chose en utilisant flexbox. Flexbox n'est pas pris en charge en IE9 and lower.

Voici quelques ressources:

jsfiddle avec les préfixes de navigateur

HTML

<ul>
    <li>
        <p>Some Text</p>
    </li>
    <li>
        <p>A bit more text that goes on 2 lines</p>
    </li>
    <li>
        <p>Even more text that demonstrates how lines can span multiple lines</p>
    </li>
</ul>

CSS

li {
    display: flex;
    justify-content:center;
    align-content:center;
    flex-direction:column; /* column | row */
}

Mise à jour - une Autre solution

C'est à partir de zerosixthree et vous permet de centre de quoi que ce soit avec 6 lignes de css

Cette méthode n'est pas pris en charge en IE8 and lower

jsfiddle

HTML

<ul>
    <li>
        <p>Some Text</p>
    </li>
    <li>
        <p>A bit more text that goes on 2 lines</p>
    </li>
    <li>
        <p>Even more text that demonstrates how lines can span multiple lines</p>
    </li>
</ul>

CSS

p {
    text-align: center;
    position: relative;
    top: 50%;
    -ms-transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
}

Réponse précédente

Simple et de la croix-navigateur, utile que des liens dans le marqué réponse sont légèrement dépassées.

Comment verticalement et horizontalement centrer le texte dans une liste non ordonnée et une div sans avoir recours à JavaScript ou css de la hauteur de ligne. N'importe quelle quantité de texte que vous avez, vous n'aurez pas à appliquer toutes les classes spéciales pour les listes ou les divs (le code est le même pour chacun). Cela fonctionne sur tous les principaux navigateurs, y compris IE9, IE8, IE7, IE6, Firefox, Chrome, Opera et Safari. Il y a 2 spécial des feuilles de style (1 pour IE7 et un autre pour IE6) pour les aider ainsi à cause de leur css limitations des navigateurs modernes n'ont pas.

Andy Howard - Comment verticalement et horizontalement centrer le texte dans une liste non ordonnée ou div

Edit: Comme je n'ai pas beaucoup de soins pour IE7/6 pour le dernier projet, j'ai travaillé, j'ai utilisé un peu dépouillé version (c'est à dire supprimé le truc qui fait le travail dans IE7 et 6). Peut être utile pour quelqu'un d'autre...

jsfiddle

HTML

<ul>
    <li>
        <div class="outerContainer">
          <div class="innerContainer">
            <div class="element">
                <p><!-- Content --></p>
            </div>
          </div>
        </div>
    </li>
    <li>
        <div class="outerContainer">
          <div class="innerContainer">
            <div class="element">
                <p><!-- Content --></p>
            </div>
          </div>
        </div>
    </li>
</ul>

Et le CSS:

.outerContainer {
    display: table;
    width: 100px; /* width of parent */
    height: 100px; /* height of parent */
    overflow: hidden;
}
.outerContainer .innerContainer {
    display: table-cell;
    vertical-align: middle;
    width: 100%;
    margin: 0 auto;
    text-align: center;
}
li {
    background: #ddd;
    width: 100px;
    height: 100px;
}

114voto

Neftas Points 1026

J'utilise la suite à la verticale du centre aléatoire des éléments facilement:

HTML:

<div style="height: 200px">
    <div id="mytext">This is vertically aligned text within a div</div>
</div>

CSS:

#mytext {
    position: relative;
    top: 50%; 
    transform: translateY(-50%);
    -webkit-transform: translateY(-50%);
}

Ce centre le texte dans mon div exactement à la verticale du milieu de 200px de haut extérieures div. Notez que vous devrez peut-être utiliser un navigateur préfixe (comme -webkit- dans mon cas) pour faire ce travail pour votre navigateur.

Cela fonctionne non seulement pour le texte, mais aussi pour les autres éléments.

43voto

bogonko Points 2074

Vous pouvez le faire par réglage de l'affichage de 'table-cell' et en appliquant un vertical-align:middle;

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

Ce n'est cependant pas pris en charge par toutes les versions d'Internet Explorer selon cet extrait, j'ai copié de http://www.w3schools.com/cssref/pr_class_display.asp sans autorisation.

Remarque: Les valeurs "inline-table", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-row", "table-row-group" et "hériter" ne sont pas pris en charge par IE7 et plus tôt. IE8 nécessite un !DOCTYPE. IE9 prend en charge les valeurs.

Le tableau suivant montre le permis d'afficher des valeurs aussi de http://www.w3schools.com/cssref/pr_class_display.asp. J'Espère que cette aide

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X