Ich glaube, dass ich in der Lage war, mit dem Einsatz von Flexbox zu erreichen, was Sie wollen. TL; DR: siehe Schnipsel unten.
Zuerst verschachtelte ich div.sub-title
innerhalb div.title
im HTML.
Dann habe ich den div.title
in einen flexiblen Behälter mit display: flex
gedreht und die Fließrichtung auf column
eingestellt. Durch das Hinzufügen von werden die Elemente im Container zentriert.
Als nächstes zielte ich das erste h1
Element, Hinzufügen eines border-top
und border-bottom
. Du kannst es so dick machen wie du magst - ich setze 4px
. Wenn Sie den Abstand zwischen den Rahmen und dem Titel hinzufügen oder verringern möchten, passen Sie padding
an.
Ich zielte dann auf den div.sub-title
Container. Ich gab ihm eine position
von relative
und dann versetzte seine Position vertikal mit top: -45px
. Sie können diesen Wert anpassen, um ihn so zu zentrieren, wie Sie es möchten. Ich habe eine Null line-height
angewendet, um den Standardwert zu entfernen, der in einer Überschrift ziemlich groß ist. Um den Abstand zwischen dem Untertitel und der Linie auf beiden Seiten anzupassen, fügen Sie padding
zu div.sub-title
-I verwendet 20px
hinzu. Fügen Sie schließlich eine Hintergrundfarbe hinzu, die dem Hintergrund Ihrer Seite entspricht.
Während dies funktioniert, wird es weitgehend davon abhängen, wie viele vordefinierte Werte Sie verwenden können (wie padding
und background-color
).
Eine andere Sache zu beachten ist, wenn die Bildschirmbreite zu klein wird, und der Untertitel wraps, wird es wirklich hässlich aussehen. Dies liegt daran, dass line-height
auf Null gesetzt ist.Um dies zu beheben, können Sie min-width
auf div.title
setzen, um zu verhindern, dass der gesamte Container eine bestimmte Breite unterschreitet, oder line-height
in div.sub-title
an einem bestimmten Haltepunkt mit einer Medienabfrage zurücksetzen.
.title {
display: flex;
flex-flow: column nowrap;
align-items: center;
min-width: 350px;
}
.title > h1 {
display: inline;
padding: 30px 0;
border-top: 4px solid black;
border-bottom: 4px solid black;
text-align: center;
}
.sub-title {
position: relative;
top: -45px;
/* reset this w/ a media query when screen size gets too small */
line-height: 0px;
padding: 0 20px;
background-color: #fff;
}
<body>
<div class="title">
<h1>Tomorrow Or Something Longer</h1>
<div class="sub-title">
<h1>Today or something</h1>
</div>
</div>
</body>
CSS-Tricks hat einen Artikel im Zusammenhang mit dieser, die Ihr Problem lösen könnte: https://css-tricks.com/line-on-sides-headers/ –