Pravayest Pravayest Pravayest Pravayest - 25 days ago 8
CSS Question

Div with text over image

I have list with images and text. And I want to see text over image.

My html:

<li>
<div class="textoverlay">
<a href=""><h1>Text</h1></a>
<p>Lorem ipsum dolor sit amet, co</p>
</div>
<img width="667" height="500" src="..." >
</li>


Also css:

li{
float:right
}
.textoverlay {
margin: 50px 25px 0 0;
position: absolute;
z-index: 22;
}


But is it possible to align a
<div class="textoverlay">
to the middle of the image?

Answer

Following css will make an element vertically middle aligned:

.parent {
  position: relative;
}
.child {
  transform: translateY(-50%);
  position: absolute;
  top: 50%;
}

And following css will make an element both horizontally and vertically middle aligned:

.parent {
  position: relative;
}
.child {
  transform: translateY(-50%);
  position: absolute;
  text-align: center;
  right: 0;
  top: 50%;
  left: 0;
}

.list {
  overflow: hidden;
  list-style: none;
  padding: 0;
  margin: 0;
}
li{
  position: relative;
  float:right
}
.textoverlay {
  transform: translateY(-50%);
  text-align: center;
  position: absolute;
  z-index: 10;
  right: 0;
  top: 50%;
  left: 0;
}
<ul class="list">
  <li>
    <div class="textoverlay">
      <a href=""><h1>Text</h1></a>
      <p>Lorem ipsum dolor sit amet, co</p>
    </div> 
    <img width="350" height="150" src="http://placehold.it/350x150" >       
  </li>
</ul>