J’ai un titre qui peut avoir une ou plusieurs lignes.
Comment aligner le texte verticalement? Si c’était toujours une ligne, je pouvais simplement régler la hauteur de la ligne à la hauteur du conteneur.
Je peux le faire en utilisant JavaScript, mais je ne l’aime pas vraiment, je cherche une méthode CSS pure.
De plus, si le conteneur pouvait se développer avec les lignes, il serait parfait, donc je peux toujours avoir le même rembourrage en haut et en bas.
Si vous n’aimez pas l’ display:table
astuce (je sais que je ne sais pas), voici une solution sans elle:
.cen { min-height:5em; width:12em; background:red; margin:1em 0; } .cen p { display:inline-block; vertical-align:middle; margin:0 0 0 1em; width:10em; } .cen::after { display:inline-block; vertical-align:middle; line-height:5em; width:0; content:"\00A0"; overflow:hidden; }
avec HTML
Text in div 1
Cela donne au div une hauteur de 5em, sauf si le contenu est plus élevé, alors il grandit.
Exemple en direct ici .
Edit: Oh, sur quels navigateurs est-ce censé fonctionner? IE8 ne va pas coopérer.
(Édition ultérieure: CSS mis à jour pour gérer les problèmes dans Chrome)
J’aime beaucoup cette solution:
Put your multi-line content here
N’hésitez pas à utiliser des feuilles de style, et 100% pour la hauteur …
Peut aussi avoir à commenter des espaces entre les balises span, car ce sont des blocs en ligne
Le crédit va à Hadès . Je l’ai eu d’ ici
Put your multi-line content here. Put your multi-line content here. Put your multi-line content here. Put your multi-line content here. Put your multi-line content here. Put your multi-line content here.
quelque chose comme ça
Lorem Ipsum is simply
div { display: table; } p { display:table-cell; vertical-align: middle; }
Si vous voulez que votre texte soit réactif, envelopper des mots de une à plusieurs lignes à mesure que la largeur change dynamicment, cela peut être insuffisant, car .inlinehelper
peut pousser du texte sous lui-même.
Voici une solution complète pour une tâche aussi simple:
HTML:
CSS:
#responsive_wrap { display: block; height: 100%; //dimensions just for width: 100%; //example's sake white-space: nowrap; } #content { display: inline-block; white-space: initial; } .inlinehelper { height: 100%; width: 0; vertical-align: middle; display: inline-block; }
Notez la propriété white-space:nowrap
, qui empêche que .inlinehelper
et #content
se #content
par rapport à l’autre. white-space:initial
sur #content
réinitialise la capacité à envelopper pour span
elle-même;
Une autre option: plus une question de préférence personnelle. Vous pouvez utiliser un pseudo-élément au lieu de .inlinehelper
. Supprimez les règles et l’élément .inlinehelper
css et ajoutez ce pseudo-élément css selector:
#responsive_wrap:before { content: ""; display: inline-block; vertical-align: middle; height: 100%; width: 0px; }
PS: Je me suis rendu compte que cette question est vraiment trop ancienne, alors laissez-moi vous répondre, peut-être que ce sera utile pour quelqu’un.
En termes de style, un tableau serait le meilleur moyen de mettre en page votre contenu (placez les tags de style dans CSS):
Lorem ipsum dolor sit amet ipswum dolor 1 Line
Le nombre de lignes nécessitera un script JS, regardez ici:
http://www.webdeveloper.com/forum/archive/index.php/t-44333.html
J’aime ce genre de solution. J’ai vu quelque part cette astuce dans stackoverflow mais ne me souviens plus où exactement. Très utile! 🙂
ul { background: #000; padding-left: 0; } ul li { height: 130px; position: relative; -webkit-box-sizing: border-box; box-sizing: border-box; border-bottom: 3px solid #F7F7F7; } ul li:last-of-type { border-bottom: none; } ul li:after { color: #333; position: absolute; right: 35px; font-size: 40px; content: ">"; top: 50%; margin-top: -24px; color: #FFDA00; -webkit-transition: 0.25s all ease; transition: 0.25s all ease; } ul li a { font-size: 35px; font-family: Arial; color: #fff; -webkit-box-sizing: border-box; box-sizing: border-box; padding-left: 40px; height: 100%; line-height: 38px; display: inline-block; width: 100%; text-align: left; text-decoration: none; } ul li a:before { display: inline-block; vertical-align: middle; content: " "; height: 100%; } ul li a span { display: inline-block; vertical-align: middle; }