2017-12-03 1 views
0

Vor diesem Beitrag lese ich einige Artikel zu dem Thema, und ich bin mir bereits bewusst, einige der verwendeten Tricks für vertikale Ausrichtung - die Zeilenhöhe für einzelne Zeile des Textes, die Anzeige: Tabelle für einige Divs und Flexbox in CSS3. Aber ich brauche noch Hilfe zwei Linien innerhalb eines div auszurichten:Vertikal zwei Zeilen Text in einem div

.keys { 
 
    display: flex; 
 
    flex-direction: row; 
 
    flex-wrap: nowrap; 
 
    justify-content: center; 
 
    align-items: center; 
 
    min-height: 70vh; 
 
} 
 

 
.key { 
 
    border: 0.1rem solid white; 
 
    margin: 1rem; 
 
    width: 5rem; 
 
    height: 5rem; 
 
    padding: 0.5rem 0; 
 
    text-align: center; 
 
    color: white; 
 
} 
 

 
kbd { 
 
    display: block; 
 
}
<div class="keys"> 
 
    <div class="key" data-key="65"><kbd>A</kbd><span class="sound">text</span></div> 
 
    <div class="key" data-key="83"><kbd>S</kbd><span class="sound">text</span></div> 
 
    <div class="key" data-key="68"><kbd>D</kbd><span class="sound">text</span></div> 
 
    <div class="key" data-key="70"><kbd>F</kbd><span class="sound">text</span></div> 
 
</div>

Wie man sehen kann ich schon einen Flexbox Container haben und Display zu verwenden: Tabelle wird eine zusätzliche div benötigen. Vielleicht wäre es die Antwort, mit der Polsterung oder einer relativen Positionierung zu spielen. Was ist der beste Weg, um diesen Textinhalt vertikal zu zentrieren?

+0

Können Sie bitte eine Geige erstellen? Ich bin mir auch nicht sicher, was du mit vert * align * zwei Zeilen innerhalb eines divs meinst. – wazz

+0

sollten Sie Ihren Rahmen und Text auf Schwarz setzen, sonst ist es schwierig, Ihr Beispiel zu sehen. – iSZ

Antwort

1

Veränderte Antwort nach Kommentar:

dies auch zu .key hinzufügen, um es einen flexiblen Behälter zu machen, die übereinander seinen Inhalt Zentren (die bereits bestehenden text-align: center hat die horizontale Text-Zentrierung):

display: flex; 
flex-direction: column; 
justify-content: center; 

(Hinweis: Da alles weiß ist und daher unsichtbar bleibt, habe ich einen schwarzen Hintergrund zu den .key Elemente)

.keys { 
 
    display: flex; 
 
    flex-direction: row; 
 
    flex-wrap: nowrap; 
 
    justify-content: center; 
 
    align-items: center; 
 
    min-height: 70vh; 
 
} 
 

 
.key { 
 
    display: flex; 
 
    flex-direction: column; 
 
    justify-content: center; 
 
    border: 0.1rem solid white; 
 
    margin: 1rem; 
 
    width: 5rem; 
 
    height: 5rem; 
 
    padding: 0.5rem 0; 
 
    text-align: center; 
 
    color: white; 
 
    background: black; 
 
} 
 

 
kbd { 
 
}
<div class="keys"> 
 
    <div class="key" data-key="65"><kbd>A</kbd><span class="sound">text</span></div> 
 
    <div class="key" data-key="83"><kbd>S</kbd><span class="sound">text</span></div> 
 
    <div class="key" data-key="68"><kbd>D</kbd><span class="sound">text</span></div> 
 
    <div class="key" data-key="70"><kbd>F</kbd><span class="sound">text</span></div> 
 
</div>

+0

Ich glaube, ich habe es nicht geschafft, zu erklären, was ich erreichen möchte, tut mir leid. Was ich brauche, ist das Wort "Text", das unterhalb des Buchstabens positioniert wird und beide Zeilen vertikal und horizontal zentriert werden. Wie geht das ? – pollx

+0

Ah okay - bitte beachte meine geänderte Antwort – Johannes

+0

danke! So können die Kindelemente einer Flexbox auch als Flexbox angezeigt werden ?? Das ist cool ! Was ist mit den Eigenschaften, die auf die Kind-Elemente wie Flex-Grow, Flex-Shrink usw. angewendet werden? Sie werden trotzdem wirken oder nicht? – pollx

Verwandte Themen