Zanim zaczniemy:
Nie zamykaj tego jako duplikatu innego pytania. Właśnie szukałem tutaj na Stackoverflow bez znalezienia tego dokładnego przypadku.CSS - wyrównanie pionowe tekstu w bezwzględnym położeniu akapit
Najbliższy jest chyba this question. Mimo to, odpowiedzi tam podane naprawdę nie działają dla mnie, wierzę, ponieważ akapit jest ustawiony position: absolute;
.
Ów HTML:
<ul>
<li><img src="http://www.placehold.it/300x200" /><p><span>Lorem Ipsum</span></p></li>
</ul>
a 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;
prostu wpada tekst odrobinę z dala od góry, ale naprawdę nie w środek.
Ustawienie przęsła position: absolute;
, a następnie zastosowanie top: 50%;
, a następnie margin-top: -x%;
nie będzie działać, ponieważ wysokość przęsła nie jest znana, ponieważ jest to zawartość dynamiczna.
Chociaż połączone pytanie mówi, że jest to zła praktyka, spróbowałem również podejścia display: table-cell
bez żadnego wyniku. Proszę pomóż mi.
Dlaczego masz element blokowy wewnątrz elementu listy? Nie uważasz, że właśnie dlatego masz problemy? –
O ile mi wiadomo, jedynymi elementami listy, które nie mogą zawierać elementów blokowych, są "dt". – Sven
Można oczywiście ustawić element listy na "display: block;". Myślę, że zbliżasz się do problemu z niewłaściwego końca teleskopu. Co próbujesz osiągnąć? Wizualnie, jak to ma wyglądać? Czy tekst powinien znajdować się na górze obrazu? –