Display:table and overflow:hidden
by Dennis Betman
HTML
<div class="image-clipper">
<img src="http://placekitten.com/400/500" style="margin: -150px 0 0 -100px;" />
<div class="text-panel">
<div class="text-cell">
<h1>Overhemd<br/>24,95</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</div>
CSS
.image-clipper {
width: 250px;
height: 300px;
border: 5px solid red;
overflow: hidden;
position: relative;
}
.image-clipper .text-panel {
position: absolute;
top: 0;
left: 0;
display: table;
height: 100%;
}
.image-clipper .text-cell {
display: table-cell;
vertical-align: middle;
padding: 20px; /* works okay */
background-color: rgba(255,255,255,0.5); /* applied to entire cell */
}
h1, p {
background-color: rgba(255,255,255,0.5); /* applied to child elements */
}