Texte centré avec les rh-comme ligne sur les deux côtés, sans l'aide d'une table
J'ai besoin de créer un titre avec l'égalité de longueur des lignes sur les deux côtés du texte du titre, et une taille fixe l'espacement entre les lignes et le texte. Le texte varie donc il ne doit pas définir une largeur. Les lignes doivent prendre toutes les autres de la largeur disponible dans le titre conteneur. Le texte du titre ne doit pas définir un arrière-plan parce que l'arrière-plan derrière il va varier. Quelque chose comme ceci:
--------------------------------------------------------- Texte ---------------------------------------------------------
Je l'ai résolu en utilisant un tableau:
<table width="100%">
<td><hr /></td>
<td style="width:1px; padding: 0 10px; white-space: nowrap;">Some text</td>
<td><hr /></td>
</table>
Vous pouvez l'essayer ici: http://jsfiddle.net/md2dF/3/
Sémantiquement c'est une très mauvaise solution, le titre n'a rien à voir avec des données tabulaires. Comment voulez-vous faire cela sans une table?
Pour résumer (parce que les solutions proposées ont tous oublié une ou à plusieurs des exigences):
- Le titre ne doit pas avoir une largeur fixe
- Le texte du titre ne doit pas avoir un arrière-plan
- Le texte du titre ne doit pas avoir une largeur fixe
- Les lignes de chaque côté du texte doit prendre toutes les autres largeur
- L'espacement entre les lignes et le texte doit avoir une largeur fixe
- En cas de doute, regardez http://jsfiddle.net/md2dF/3/
OriginalL'auteur Robert Kajic | 2012-09-20
Vous devez vous connecter pour publier un commentaire.
Edit:
Sans couleur de fond, ni de l'image:
CSS:
Travaille dans IE8+
Démonstration en direct
Réponse originale à cette question:
Sans image:
CSS:
Démonstration en direct
Vous pouvez utiliser n'importe quel bloc élément que vous souhaitez (
h1
,h2
,whatever
) au lieu dediv
.Désolé, j'ai raté la partie. Je vais modifier ma réponse
La nouvelle réponse n'est pas correcte non plus. Les lignes doivent prendre toutes les largeur restante. Les vôtres ne le sont pas.
Vous pouvez ajuster la durée et des rh, de la taille au besoin. Si le nombre de caractères varient beaucoup, votre méthode semble être la "meilleure".
À la fois le texte et le récipient doit être en mesure de varier. Je ne veux pas de régler manuellement toutes les largeurs.
OriginalL'auteur Giona
La façon de résoudre ce problème sans en connaître la largeur et la couleur de fond est la suivante:
Structure
CSS
Exemple: http://jsfiddle.net/z8Hnz/
background: red
, si vous utilisezborder: 1px solid red
ouborder-top: 1px solid red
, la ligne va apparaître dans la sortie imprimée.il fonctionne pour moi, même aujourd'hui.
OriginalL'auteur MartinF
Vous pouvez le faire comme si (pour l'arrière-plan, vous pouvez faire une image de 1px de la couleur de votre choix):
Edit: Sans bg couleur:
Vous aurez besoin d'ajuster les pourcentages et autres joyeusetés, mais cela fonctionne en général.
Ajout d'une deuxième solution pour vous, donnez-lui un coup de feu? 🙂
Il ne fonctionne pas: jsfiddle.net/kajic/d5znr
OriginalL'auteur Tammy Shipps