7
votes

Comment puis-je centrer le texte verticalement avec CSS?

J'ai essayé de trouver comment centrer le texte verticalement, mais je ne trouve pas de réponse satisfaisante. La meilleure réponse que j'ai trouvée jusqu'à présent est Ceci . Cela donne à cela que cela me permet de centrer le texte verticalement, mais si j'utilise cela et que j'ajoute plus de texte, il n'est étendu qu'au fond et ne pas être rentré, comme ce qui se passe horizontalement.

note, je ' m Recherche une solution CSS-seule, donc pas de JavaScript s'il vous plaît. Remarque, je veux pouvoir ajouter plusieurs lignes de texte. P>

<?xml version="1.0" encoding="UTF-8"?>
<!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" xml:lang="en" lang="en">
    <head>
        <style type="text/css">
            div#maindiv {
                width: 810px;
                height: 99px;
                background-color: black;
                margin: 0px;
                padding: 0px;
                color: white;
                font-family: Sans-serif;
            }
            div#maindiv span {
                font-size: 1.1em;
            }

            div.part {
                width: 262px;
                height: 99px;
                padding: 0px;
                margin: 0px;
                padding: 4px;
                border: 0px;
                color: white;
                text-align: center;
                display: table-cell;
                vertical-align: middle;
            }

            div.bgc1 {
                background-color: #6DCAF2;
            }

            div.bgc2 {
                background-color: #2A4B9A;
            }

            div.bgc3 {
                background-color: #FF8A00;
            }


        </style>
        <title>XHTML-Strict</title>
    </head>

    <div id="maindiv">
        <body>
            <div style="float: left;">
                <div class="part bgc1">
                    <span>
                        Vegeta! What does the scouter say about his power level?!
                    </span>
                </div>
            </div>
            <div style="float:left;">
                <div class="part bgc2">
                    <span>
                        It's over NINE THOUSAAAAAAAAAND!
                    </span>
                </div>
            </div>
            <div style="float:left;">
                <div class="part bgc3">
                    <span>
                        What NINE THOUSAND? There is no way that can be right!
                    </span>
                </div>
            </div>
        </div>
    </body>
</html>


4 Réponses :


0
votes

Vous pouvez utiliser hauteur de ligne code> égal à celui de son conteneur parent.

Par exemple, P>

<div style="height:32px;>
    <p style="line-height:32px;">Text</p>
</div>


2 commentaires

Vous voulez expliquer les votes en panne? Si j'explique quelque chose de mal, n'hésitez pas à corriger.


Je n'ai pas répondu, mais OP a mentionné un problème survenu lors de l'ajout de texte (lu: Multiline) - et cela ne fonctionnera pas avec votre réponse ...



1
votes
<div style="height:50px;line-height:50px;">
    Text
</div>

3 commentaires

Vous devez marquer votre code HTML comme code ou il ne sera pas affiché dans votre réponse.


Une réponse valide que j'accepte, mais il y a un problème: lorsque le texte commence à emballer horizontalement, cela "briser" dans quelque chose de laid avec une hauteur de ligne exagérée. L'OP devrait nous faire savoir: "Combien de texte" nous parlons. ;)


Habituellement, j'utilise cela pour les boutons et les divs avec une ligne de texte.




8
votes

Vous pouvez définir votre conteneur sur Affichage: Cellule de table et Ajouter Vertical-Align: Moyen :

http://jsfiddle.net/ptriek/h5j7b/1

(mais Internet Explorer 7 et ci-dessous ne l'aimera pas ...)


1 commentaires

Outre les problèmes pré-IE8, cela ne fonctionne pas non plus sur les mobiles et les ordinateurs de poche. (Outre les victimes de la safari-navigateur, c'est-à-dire.) De plus, il ne comporte pas vraiment V-Centre du texte, il centre le conteneur enfant qui contient à nouveau du texte ... mais qui veut commencer à compter de compter des pois? ;) Super idée de toute façon ...