/ / Textausrichtung beibehalten: left und center - html, css

Pflegen Sie Text-Align: Links und Mitte - html, css

Ich habe den folgenden Seitenkopf aufgebaut, der vertikal zur Mitte ausgerichtet ist.

h1 span {
display: block;
}
.parent {
width: 300px;
height: 400px;
display: table;
background: #ccc;
}
.center {
display: table-cell;
text-align: left;
vertical-align: middle;
}
<div class="parent">
<div class="center">
<header>
<h1>
<span>First line</span>
<span>Second line</span>
</h1>
</header>
</div>
</div>

Ich möchte das ausrichten <h1> Text in die Mitte, aber beibehalten text-align: left, so:

Bildbeschreibung hier eingeben

Ich weiß, dass dies möglich ist, indem Sie Folgendes hinzufügen:

h1 {
margin: 0 auto;
width: 156px;
}

Der Text ist jedoch auf jeder Seite unterschiedlich width müsste automatisch erkannt werden. Gibt es eine Möglichkeit, dies zu tun, vorzugsweise ohne Javascript?

BEARBEITEN: Ich suche eine Lösung, die in IE9 + funktioniert.

Antworten:

1 für die Antwort № 1

Sie können verwenden flexbox dafür, align-items vertikal zentrieren (die Querachse) und justify-content entlang der Linie zentrieren

.parent {
width: 300px;
height: 400px;
background: #ccc;
display: flex;
align-items: center;
justify-content: center;
}
span {
display: block
}
<div class="parent">
<header>
<h1>
<span>First line</span>
<span>Second line</span>
</h1>
</header>
</div>

AKTUALISIEREN: Für IE9 +:

.parent {
width: 300px;
height: 400px;
background: #ccc;
display: table;
text-align: center
}
h1 {
display: inline-block;
}
span {
display: block;
text-align:left
}
header {
vertical-align: middle;
display: table-cell
}
<div class="parent">
<header>
<h1>
<span>First line</span>
<span>Second line</span>
</h1>
</header>
</div>


1 für die Antwort № 2

Legen Sie die Verpackung fest h1 zu display:inline-block und zentrieren Sie das mit text-align:center auf dem übergeordneten div.

Dann text-align:left auf der Innenseite span richtet den Text nach Bedarf aus.

h1 span {
display: block;
text-align: left;
}
h1 {
display: inline-block;
}
.parent {
width: 300px;
height: 400px;
display: table;
background: #ccc;
text-align: center;
}
.center {
display: table-cell;
vertical-align: middle;
}
<div class="parent">
<div class="center">
<header>
<h1>
<span>First line</span>
<span>Second line</span>
</h1>
</header>
</div>
</div>


1 für die Antwort № 3

HTML

<div class="parent">
<div class="center">
<header>
<h1>
<span>First line</span>
<span>Second line</span>
</h1>
</header>
</div>
</div>

CSS

h1 span {
display: block;
}
.parent {
width: 300px;
height: 400px;
display: table;
background: #ccc;
}
.center {
display: table-cell;
text-align: center;
vertical-align: middle;
}
h1{
display: inline-block;
text-align: left;
}

1 für die Antwort № 4

Das können Sie noch knapper machen:

header {
width: 300px;
height: 400px;
background: #ccc;
text-align: center;
display: table-cell;
vertical-align: middle;
}
header h1 {
display: inline-block;
text-align: left;
}
<header>
<h1>
First line<br/>
Second line
</h1>
</header>


0 für die Antwort № 5

Verwenden Sie folgendes css:

h1{position:relative; left:50%; transform:translateX(-50%) translateY(0); -o-transform:translateX(-50%) translateY(0); -webkit-transform:translateX(-50%) translateY(0); -o-transform:translateX(-50%) translateY(0); -ms-transform:translateX(-50%) translateY(0); -moz-transform:translateX(-50%) translateY(0); text-align:left}