Retrait à partir de la deuxième ligne d'un paragraphe avec CSS
Comment puis-je indenter à partir de la deuxième ligne d'un paragraphe?
J'ai essayé
p {
text-indent: 200px;
}
p:first-line {
text-indent: 0;
}
Et
p {
margin-left: 200px;
}
p:first-line {
margin-left: 0;
}
Et
(with position:relative;)
p {
left: 200px;
}
p:first-line {
left: 0;
}
5 réponses
Est-ce littéralement juste la deuxième ligne que vous voulez indenter, ou est-ce de la deuxième ligne (ie. un retrait négatif de première ligne)?
Si c'est ce dernier, quelque chose du genre de ceci JSFiddle serait approprié.
HTML
<div>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</div>
<br/><br/>
<span>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</span>
CSS
div {
padding-left: 1.5em;
text-indent:-1.5em;
}
span {
padding-left: 1.5em;
text-indent:-1.5em;
}
Cet exemple montre comment l'utilisation de la même syntaxe CSS dans un DIV ou un SPAN produit des effets différents.
Cela a fonctionné pour moi:
p { margin-left: -2em;
text-indent: 2em
}
Make left-margin: 2em ou plus va pousser le texte entier, y compris la première ligne à droite 2em. Que d'ajouter text-indent (applicable à la première ligne) comme-2em ou plus.. Cela ramène la première ligne au début sans marge. Je l'ai essayé pour les balises de liste
<style>
ul li{
margin-left: 2em;
text-indent: -2em;
}
</style>
Si vous stylisez comme liste
Je suppose que mettre la deuxième ligne fonctionnerait aussi, mais nécessite une pensée humaine pour que le contenu circule correctement, et, bien sûr, des sauts de ligne durs (ce qui ne me dérange pas, en soi).
J'avais besoin de mettre en retrait deux lignes pour permettre un premier mot plus grand dans un para. Une solution unique lourde consiste à placer du texte dans un élément SVG et à le positionner de la même manière qu'un . L'utilisation de float et de la balise height du SVG définit le nombre de lignes qui seront indentées, par exemple
<p style="color: blue; font-size: large; padding-top: 4px;">
<svg height="44" width="260" style="float:left;margin-top:-8px;"><text x="0" y="36" fill="blue" font-family="Verdana" font-size="36">Lorum Ipsum</text></svg>
dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.</p>
- la hauteur et la largeur de SVG déterminent la zone bloquée.
- Y = 36 est la profondeur de la ligne de base du texte SVG et la même que font-size
- les margin-top permettent un meilleur alignement du texte SVG et du para texte
- utilisé les deux premiers mots ici pour rappeler les soins nécessaires pour les descendeurs
Oui c'est encombrant mais c'est aussi indépendant de la largeur du div contenant.
La réponse ci-dessus était à ma propre requête pour permettre au premier mot d'un para d'être plus grand et positionné sur deux lignes. Pour simplement indenter les deux premières lignes d'un para, vous pouvez remplacer toutes les balises SVG par le pixel img suivant:
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" style="float:left;width:260px;height:44px;" />