Ich versuche eine horizontale Regel mit einem Text in der Mitte zu erstellen. Beispielsweise:
----------------------------------- mein Titel hier ------------ -----------------
Gibt es eine Möglichkeit, dies in CSS zu tun? Ohne all die "-" Striche offensichtlich.
html
css
cross-browser
Jason
quelle
quelle
form
Tags?fieldset
undlegend
Elemente nachschlagenAntworten:
So würde ich es ungefähr machen: Die Linie wird erstellt, indem ein
border-bottom
auf das Enthalten gesetzt wird undh2
dannh2
ein kleineres gegeben wirdline-height
. Der Text wird dann in einen verschachteltenspan
Hintergrund mit nicht transparentem Hintergrund eingefügt.Ich habe nur in Chrome getestet, aber es gibt keinen Grund, warum es in anderen Browsern nicht funktionieren sollte.
JSFiddle: http://jsfiddle.net/7jGHS/
quelle
Nachdem ich verschiedene Lösungen ausprobiert habe, habe ich eine geliefert, die für verschiedene Textbreiten, jeden möglichen Hintergrund und ohne zusätzliches Markup gültig ist.
Ich habe es in IE8, IE9, Firefox und Chrome getestet. Sie können es hier überprüfen http://jsfiddle.net/Puigcerber/vLwDf/1/
quelle
h1 {
overflow: hidden; `Textausrichtung: links; `Text-Einzug: 40px; `}:after
Element an die Breite des Blocks anzupassen . Ich bin gespannt: Was genau ist die Rollemargin-right: -50%
? Wenn ich mit Code herumfummelte und diese Eigenschaft fehlte, brach die Dekoration in eine andere Zeile. Und selbst wenn:after
100% Breite zugewiesen ist, brauche ich immer noch das negative Randrecht von 50%, damit es passt. Warum?Ok, dieser ist komplizierter, aber er funktioniert in allem außer IE <8
Die Elemente: vor und: nach sind absolut so positioniert, dass wir eines nach links und eines nach rechts ziehen können. Auch die Breite (in diesem Fall 40%) hängt stark von der Breite des Textes ab. Sie müssen sich eine Lösung dafür überlegen. Zumindest die
top: 1.2em
stellt das sicher, dass die Linien mehr oder weniger in der Mitte des Textes bleiben, auch wenn Sie eine andere Schriftgröße haben.Es scheint jedoch gut zu funktionieren: http://jsfiddle.net/tUGrf/3/
quelle
form
Tags will . Wenn er es tut, könnte er, wie Sie sicher wissen, einfachfieldset
und verwendenlegend
.Kürzeste und beste Methode:
quelle
font-family: monospace;
funktioniert.Hier ist eine Flex-basierte Lösung.
JSFiddle: https://jsfiddle.net/yoshiokatsuneo/3h1fmj29/
quelle
<h1><span>Today</span></h1>
mit einem Rand / Abstand auf der Spanne.für spätere (heutige) Browser,
display:flex
unddpseudo-elements
macht es einfach zu zeichnen.border-style
,box-shadow
Und sogarbackground
hilft auch für die Make - up.quelle
quelle
Geben Sie der Spanne einen Abstand, um mehr Platz zwischen dem Text und der Linie zu schaffen.
Beispiel: http://jsfiddle.net/tUGrf/
quelle
Ich habe mich nach Lösungen für diese einfache Dekoration umgesehen und einige gefunden, einige seltsam, einige sogar mit JS, um die Höhe der Schrift zu berechnen, und bla, bla, bla, dann habe ich die gelesen eine auf diesem Beitrag und lesen Sie einen Kommentar von dreißig Punkten über
fieldset
undlegend
ich dachte , dass es war.Ich überschreibe diese beiden Elementstile. Ich denke, Sie könnten die W3C-Standards für sie kopieren und in Ihre
.middle-line-text
Klasse aufnehmen (oder wie auch immer Sie es nennen möchten), aber das habe ich getan:Hier ist die Geige: http://jsfiddle.net/legnaleama/3t7wjpa2/
Ich habe mit den Rahmenstilen gespielt und es funktioniert auch in Android;) (Getestet auf Kitkat 4.XX)
BEARBEITEN:
Nach der Idee von Bekerov Artur, die auch eine gute Option ist, habe ich das .png base64-Bild geändert, um den Strich mit einer .SVG zu erstellen, sodass Sie in jeder Auflösung rendern und auch die Farbe des Elements ohne andere Software ändern können :)
quelle
Lösung für IE8 und neuere ...
Bemerkenswerte Themen:
Verwenden von
background-color
zum Maskieren eines Rahmens ist möglicherweise nicht die beste Lösung. Wenn Sie eine komplexe (oder unbekannte) Hintergrundfarbe (oder ein unbekanntes Bild) haben, schlägt die Maskierung letztendlich fehl. Wenn Sie die Größe des Texts ändern, werden Sie feststellen, dass die weiße Hintergrundfarbe (oder was auch immer Sie einstellen) den Text in der Zeile darüber (oder darunter) verdeckt.Sie möchten auch nicht "schätzen", wie breit die Abschnitte sind, da dies die Stile sehr unflexibel macht und auf einer reaktionsfähigen Site, auf der sich die Breite des Inhalts ändert, fast unmöglich zu implementieren ist.
Lösung:
( Ansicht JSFiddle )
background-color
Verwenden Sie Ihredisplay
Eigenschaft, anstatt einen Rahmen mit a zu "maskieren" .HTML
CSS
Ändern Sie die Größe Ihres Textes, indem Sie Ihre
font-size
Immobilie auf dem platzieren.group
Element platzieren.Einschränkungen:
top
Eigenschaft auf.line
Element muss die Hälfte von seinline-height
. Also, wenn Sie eineline-height
von haben1.5em
, danntop
sollte die sein-.75em
. Dies ist eine Einschränkung, da es nicht automatisiert ist. Wenn Sie diese Stile auf Elemente mit unterschiedlichen Linienhöhen anwenden, müssen Sie Ihrenline-height
Stil möglicherweise erneut anwenden .Für mich überwiegen diese Einschränkungen die "Probleme", die ich zu Beginn meiner Antwort für die meisten Implementierungen festgestellt habe.
quelle
Dies gibt Ihnen eine feste Länge für die Linien, funktioniert aber hervorragend. Die Zeilenlängen werden durch Hinzufügen oder Nehmen von '\ 00a0' (Unicode-Raum) gesteuert.
quelle
Wenn sich jemand fragt, wie die Überschrift so eingestellt werden soll, dass sie mit einem festen Abstand zur linken Seite angezeigt wird (und nicht wie oben dargestellt zentriert ist), habe ich dies durch Ändern des Codes von @ Puigcerber herausgefunden.
Hier die JSFiddle .
quelle
das wird dir helfen
zwischen Zeile
quelle
Ich verwende ein Tabellenlayout, um die Seiten dynamisch zu füllen, und 0-Höhen-Divs mit absoluter Position für die dynamische vertikale Positionierung:
https://jsfiddle.net/eq5gz5xL/18/
Ich fand, dass ein wenig unterhalb der wahren Mitte mit Text am besten aussieht; Dies kann dort eingestellt werden, wo es
55%
ist (eine höhere Höhe senkt die Stange). Das Erscheinungsbild der Linie kann dort geändert werden, wo dieborder-bottom
befindet.HTML:
CSS:
quelle
Nicht um ein totes Pferd zu schlagen, aber ich suchte nach einer Lösung, landete hier und war selbst nicht zufrieden mit den Optionen, nicht zuletzt aus irgendeinem Grund konnte ich die hier angebotenen Lösungen nicht dazu bringen, für mich gut zu funktionieren. (Wahrscheinlich aufgrund von Fehlern meinerseits ...) Aber ich habe mit Flexbox gespielt und hier ist etwas, das ich für mich selbst arbeiten durfte.
Einige der Einstellungen sind fest verdrahtet, jedoch nur zu Demonstrationszwecken. Ich denke, diese Lösung sollte in nahezu jedem modernen Browser funktionieren. Entfernen / passen Sie einfach die festen Einstellungen für die .flex-Elternklasse an, passen Sie Farben / Text / Zeug an und (ich hoffe) Sie werden mit diesem Ansatz genauso zufrieden sein wie ich.
HTML:
Ich habe meine Lösung auch hier gespeichert: https://jsfiddle.net/Wellspring/wupj1y1a/1/
quelle
Für den Fall, dass jemand möchte, ist meiner Meinung nach die beste Lösung mit CSS eine Flexbox.
Hier ist ein Beispiel:
Dies sollte immer zu einem perfekt zentrierten, ausgerichteten Inhalt mit einer Linie nach links und rechts führen, mit einem leicht zu kontrollierenden Abstand zwischen der Linie und Ihrem Inhalt.
Es erstellt ein Linienelement vor und nach Ihrem obersten Steuerelement und setzt es in Ihrem Flex-Container auf die Reihenfolge 1,3, während Sie Ihren Inhalt auf die Reihenfolge 2 festlegen (in die Mitte gehen). Wenn Sie das Vorher / Nachher-Wachstum von 1 angeben, belegen sie gleichermaßen den freiesten Speicherplatz, während Ihre Inhalte zentriert bleiben.
Hoffe das hilft!
quelle
Ich bin mir nicht sicher, aber Sie könnten versuchen, eine horizontale Regel zu verwenden und den Text über den oberen Rand zu schieben. Sie benötigen eine feste Breite für Ihr Absatz-Tag und einen Hintergrund. Es ist ein wenig hackig und ich weiß nicht, ob es in allen Browsern funktioniert, und Sie müssen den negativen Rand basierend auf der Größe der Schriftart festlegen. Funktioniert aber auf Chrom.
quelle
Ich habe die meisten vorgeschlagenen Methoden ausprobiert, aber es endet mit einigen Problemen wie voller Breite oder Nicht für dynamische Inhalte geeignet. Schließlich habe ich einen Code geändert und funktioniert perfekt. Dieser Beispielcode zeichnet diese Linien vorher und nachher und ist flexibel in Bezug auf Inhaltsänderungen. Mitte auch ausgerichtet.
HTML
CSS
Ergebnis: https://jsfiddle.net/fasilkk/vowqfnb9/
quelle
Für mich funktioniert diese Lösung einwandfrei ...
HTML
<h2 class="strikethough"><span>Testing Text</span></h2>
CSS
quelle
Personen, die Bootstrap 4 verwenden, können dies mit dieser Methode erreichen. Im HTML-Code erwähnte Klassen stammen aus Bootstrap 4.
Und schreiben Sie Ihren HTML-Code so
quelle
Horizontale und vertikale Linie mit Wörtern in der Mitte
Dies wird auch unter https://stackoverflow.com/a/57279326/6569224 beantwortet
quelle
Ergebnis:
quelle