CSS technique pour une ligne horizontale avec les mots dans le milieu
Je suis en train de faire une règle horizontale avec un peu de texte dans le milieu.
Par exemple:
----------------------------------- mon titre ici -----------------------------
Est-il un moyen de le faire en CSS? Sans tous les "-" tirets évidemment.
- Est-ce à l'intérieur d'un
form
tag? - oui, il est
- dans ce cas, comme thirtydot souligné en réponse à ma réponse, vous voudrez peut-être regarder la
fieldset
etlegend
éléments - stackoverflow.com/a/25691518/379855
- Pour une solution plus un arrière-plan transparent, voir Ligne avant et après le texte centré sur fond transparent
Vous devez vous connecter pour publier un commentaire.
C'est à peu près comment je ferais: la ligne est créée par la définition d'une
border-bottom
sur le contenanth2
de donner lesh2
un petitline-height
. Le texte est ensuite mis dans un imbriquéespan
avec un non-arrière-plan transparent.CSS:
HTML:
Je l'ai testé dans Chrome seulement, mais il n'y a aucune raison qu'il ne devrait pas travailler dans d'autres navigateurs.
JSFiddle: http://jsfiddle.net/7jGHS/
Après avoir essayé différentes solutions, je suis venu avec l'une valable pour de texte différentes largeurs, de tout arrière-plan et sans ajout de balisage.
CSS:
HTML:
Je l'ai testé avec IE8, IE9, Firefox et Chrome. Vous pouvez le vérifier ici http://jsfiddle.net/Puigcerber/vLwDf/1/
h1 {
overflow: hidden; text-align: left; text-indent: 40px; `}:after
élément de la largeur du bloc. Je suis curieux de savoir: quel est exactement le rôle demargin-right: -50%
? Quand j'étais tâtonner avec code, manquant de cette propriété serait faire la décoration pause pour une autre ligne. Et même quand:after
est affecté à 100% de largeur, j'ai encore besoin de la marge négative droit de 50% à le faire rentrer. Pourquoi?Ok, c'est plus compliqué mais ça marche en tout, sauf dans IE<8
Le :before et :after éléments en position absolue, de sorte que nous pouvons tirer de l'une à gauche et une à droite. Aussi, la largeur (40% dans ce cas) est très dépendante de la largeur du texte à l'intérieur.. ont pour réfléchir à une solution pour que. Au moins la
top: 1.2em
fait que les lignes restent plus ou moins dans le centre du texte, même si vous avez la taille de police différente.Il ne semble pas bien fonctionner si: http://jsfiddle.net/tUGrf/3/
form
tag. S'il le fait, comme je suis sûr que vous le savez, il pourrait tout simplement utiliserfieldset
etlegend
.Encore une autre méthode:
CSS:
HTML:
font-family: monospace;
a bien fonctionné.Voici Flex solution.
HTML:
CSS:
JSFiddle: https://jsfiddle.net/yoshiokatsuneo/3h1fmj29/
<h1><span>Today</span></h1>
avec un margin/padding sur la durée.pour plus tard(aujourd'hui) du navigateur ,
display:flex
anddpseudo-elements
le rend facile à tracer .border-style
,box-shadow
et mêmebackground
aide aussi pour le maquillage.CSS:
HTML:
CSS:
HTML:
Donner de l'envergure d'un rembourrage pour faire plus d'espace entre le texte et la ligne.
Exemple: http://jsfiddle.net/tUGrf/
J'ai été en regardant autour de certaines solutions pour ce décor simple et je l'ai trouvé tout à fait un peu, un peu bizarre, certains même avec JS pour calculer la hauteur de la police et bla,bla,bla, puis j'ai lu le un sur ce post et lire un commentaire de thirtydot parler de
fieldset
etlegend
et je pensais que c'était elle.Je suis substituant ces 2 éléments styles, je pense que l'on peut copier les normes W3C pour eux et de les inclure sur votre
.middle-line-text
classe (ou ce que vous voulez l'appeler), mais c'est ce que j'ai fait:Voici le violon: http://jsfiddle.net/legnaleama/3t7wjpa2/
J'ai joué avec les styles de bordure et il fonctionne aussi sur Android 😉 (Testé sur kitkat 4.XX)
EDIT:
Suivantes Bekerov Artur une idée de ce qui est une bonne option aussi, j'ai changé la .png base64 image pour créer des la course avec une .SVG, donc vous pouvez vous rendre dans n'importe quelle résolution et également changer la couleur de l'élément sans les autres logiciels concernés 🙂
Solution pour IE8 et plus récent...
Questions noter:
À l'aide de
background-color
pour masquer une frontière peut-être pas la meilleure solution. Si vous avez un complexe (ou inconnu) la couleur de fond (ou image), le masquage finira par échouer. Aussi, si vous redimensionnez le texte, vous remarquerez que le blanc couleur d'arrière-plan (ou de ce que vous définissez) va commencer à couvrir le texte sur la ligne au-dessus (ou en dessous).Vous aussi vous ne voulez pas "estimation" comment grand les sections sont soit, car elle rend les styles très rigide et presque impossible à mettre en œuvre sur un site responsive, où la largeur du contenu est en train de changer.
Solution:
(Vue JSFiddle)
Au lieu de "masquage" une frontière avec un
background-color
, utilisez votredisplay
propriété.HTML
CSS
Redimensionner votre texte en plaçant votre
font-size
bien sur la.group
élément.Limitations:
top
bien sur.line
élément doit être de la moitié deline-height
. Donc, si vous avez unline-height
de1.5em
, puis letop
devrait être-.75em
. C'est une limitation, car il n'est pas automatisé, et si vous êtes à l'application de ces styles sur les éléments avec différents line-heights, alors vous pourriez avoir besoin de réappliquer votreline-height
style.Pour moi, de ces limitations, l'emportent sur les "problèmes" je l'ai noté au début de ma réponse pour la plupart des implémentations.
Cela vous donne une statique de la largeur de la ligne, mais fonctionne très bien.
La largeur de la ligne est contrôlée par ajout ou '\00a0 " (un espace unicode).
CSS:
HTML:
Si quelqu'un se demande comment définir le titre tel qu'il apparaît à une distance fixe du côté gauche (et pas centré comme présenté ci-dessus), j'ai pensé que par la modification de @Puigcerber du code.
Ici la JSFiddle.
cela vous aidera à
entre la ligne
- Je utiliser un tableau de mise en page pour remplir les côtés de façon dynamique et 0-hauteur absolue de la position de la vrd pour la dynamique de positionnement vertical:
https://jsfiddle.net/eq5gz5xL/18/
Je l'ai trouvé un peu en dessous de véritable centre semble la meilleure avec du texte, ce qui peut être ajusté lorsque le
55%
est (taller hauteur rend la barre inférieure). L'apparition de la ligne peut être changé lorsque laborder-bottom
est.HTML:
CSS:
Pas à battre un cheval mort, mais j'étais à la recherche d'une solution, retrouvé ici, et ne me suis pas satisfait avec les options, au moins pas pour une raison quelconque, je n'étais pas en mesure d'obtenir le permis de travail pour moi. (Probablement due à des erreurs de ma part...), Mais j'ai joué avec flexbox et voici quelque chose que j'ai eu à travailler pour moi-même.
Certains paramètres sont câblés, mais seulement à des fins de démonstration. J'avais pense que cette solution doit travailler dans à peu près n'importe quel navigateur moderne. Juste supprimer/ajuster la position fixe pour les .flex-classe parent, ajuster les couleurs/texte/trucs et (j'espère), vous serez aussi heureux que je le suis avec cette approche.
HTML:
CSS:
HTML:
J'ai sauvé ma solution ici:
https://jsfiddle.net/Wellspring/wupj1y1a/1/
Je ne suis pas trop sûr, mais vous pouvez essayer d'utiliser une règle horizontale et en poussant le texte au-dessus de sa marge supérieure. Vous aurez besoin d'une largeur fixe sur votre étiquette de paragraphe et un arrière-plan trop. C'est un peu hacky et je ne sais pas si elle fonctionne sur tous les navigateurs, et vous devez définir la marge négative en fonction de la taille de la police. Fonctionne sur chrome si.
J'ai essayé la plupart des méthodes suggérées, mais se termine avec quelques problèmes comme sur toute la largeur, ou ne convient Pas pour le contenu dynamique. Enfin j'ai modifié un code, et fonctionne parfaitement. Cet exemple de code dessinez les lignes avant et après, et il est flexible en modifier le contenu. Centre alignés trop.
HTML
CSS
Résultat:
https://jsfiddle.net/fasilkk/vowqfnb9/
Pour moi cette solution fonctionne parfaitement bien...
HTML
<h2 class="strikethough"><span>Testing Text</span></h2>
CSS
Les personnes qui sont à l'aide de Bootstrap 4 peut atteindre avec cette méthode. classes visées dans le code HTML sont de Bootstrap 4.
Et d'écrire votre code HTML comme ceci
Horizontale et Verticale ligne avec des mots au milieu
CSS:
HTML:
C'est aussi répondu dans https://stackoverflow.com/a/57279326/6569224
Résultat:
CSS:
HTML: