JSFiddle - React, Tailwind, and code Playground

HTML

<div class="my_image">
    <img src="https://unsplash.imgix.net/photo-1428976365951-b70e0fa5c551?fit=crop&fm=jpg&h=225&q=75&w=350" />
    <div class="overlay"></div>
    <p>Overlay Caption</p>
</div>

CSS

* {
    padding:0;
    margin:0;
}
.my_image {
	float:left;
	width:50%;
	margin:0;
	padding:0;
	position:relative;
}

.my_image p {
    position: absolute;
    color: #fff;
    display: block;
    padding: 0;
    margin: 0;
	opacity:0;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    -ms-transform: translate(-50%,-50%); /* IE 9 */
    -webkit-transform: translate(-50%,-50%); /* Safari and Chrome */
	-webkit-transition: opacity .25s ease;
	-moz-transition: opacity .25s ease;
}
.overlay {
  top: 0;
  position: absolute;
  width: 100%;
  height: 100%;
  background: rgba(121,87,164,.80);
  text-align: center;
  opacity: 0;
  -webkit-transition: opacity .25s ease;
  -moz-transition: opacity .25s ease;
}

.my_image:hover .overlay, .my_image:hover p, .my_image:focus .overlay, .my_image:focus p {
               opacity:1;
			   visibility: visible;
			   }