CSS Vertikale Ausrichtung von text in absolut positionierten Absatz
Bevor wir starten:
Bitte schließen Sie nicht dieses als ein Duplikat der anderen Frage. Ich habe gerade gesucht, hier auf Stackoverflow, ohne es zu finden, die dem genauen Fall.
Die nächste ist glaube ich diese Frage. Noch, die gegebenen Antworten gibt es nicht wirklich Arbeit für mich, ich glaube, weil der Absatz im position: absolute;
.
Das ist der HTML:
<ul>
<li><img src="http://www.placehold.it/300x200" /><p><span>Lorem Ipsum</span></p></li>
</ul>
Und CSS:
li {
position: relative;
float: left;
overflow: hidden;
}
img {
width: 100%;
vertical-align: middle;
}
p {
background-color: rgba(255, 0, 0, .3);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
span {
background-color: rgba(0, 255, 0, .3);
vertical-align: middle;
}
Fiddle: http://jsfiddle.net/DpVjZ/
vertical-align: middle;
nur Unebenheiten der text ein klein wenig Weg von der Oberseite, aber nicht wirklich in der Mitte.
Einstellung der Spanne position: absolute;
und dann die Anwendung top: 50%;
und dann margin-top: -x%;
wird nicht funktionieren, da die Höhe der Spanne ist nicht bekannt, wie es ist, dynamische Inhalte.
Obwohl die verlinkten Frage erklärt, dass dies eine schlechte Praxis, ich habe auch versucht, die display: table-cell
Ansatz ohne Ergebnis. Bitte helfen Sie mir.
- Warum haben Sie eine block-level-element in einem list-item? Denken Sie nicht, dass ist, warum Sie Probleme haben?
- Soweit ich weiß, die Liste nur Elemente, die nicht enthalten darf block-level-Elemente sind
dt
. - Man könnte natürlich einfach die Liste Element, um
display:block;
. Ich denke, man nähert sich dem problem von der falschen Ende des Fernrohrs. Was wollen Sie erreichen? Optisch, was es soll Aussehen? Der text soll auf das Bild? - das ist eine haarige Frage
- Ja, der text soll über dem Bild, vertikal zentriert und horizontal. Einstellung der Liste Element zu
display: block;
tut nichts für mich, könnten Sie bitte erläutern Sie es ein bisschen mehr sein? - Bild und text sind unbekannte Größen, nehme ich an?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Loszuwerden, der p-tag. Sie haben bereits in einer li eh.
css
html
Getestet auf Fenster, IE9 und Chrome.
Weiß nicht, ob es für die demo oder nicht, aber wenn Sie wollen, dass die roten Schatten über das Bild eine Klasse für ein span-tag, dann legen Sie eine neue span mit der Klasse.
Ohne harte Codierung einer angenommenen Höhe für den text oder das Bild, das ich (leider) nicht lösen können, das in weniger als 3 Schichten:
Kombination von 1 und 2 scheint zu verhindern, dass height: 100% von der Arbeit aus mir unbekannten Gründen. Ich denke, die Ablehnung von table-cell layout scheint eine Veruntreuung des alten "benutze keine Tabellen für layouts" meme; CSS ist für das layout, so ist dies nicht falsch, das element Semantik. (Obwohl leider es erfordert semantisch bedeutungslosen divs.)
http://jsfiddle.net/svachalek/vTGxx/4/
Vertikales ausrichten ist eine heikle Sache in CSS, aber nicht schwer zu bewerkstelligen, wenn u sind vertraut mit css-Tabellen.
BEARBEITEN
Oben platzieren Sie dieses element auf der Oberseite eine andere machen nur die #wrapper position: fixed; height: 100%; width: 100%; left: 0px; top: 0px; oder innerhalb eines Elements mit position: absolute;