<section class="content">
  <figure class="picture">
    <img src="https://unsplash.it/600/300?image=788" alt="" />
    <figcaption>
      <div class="vertical-align">
      <h2>image title</h2>
      <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Minima aliquam, repellat. Vitae soluta, aliquid est assumenda molestiae.</p>
      <a href="">view more</a>
      </div>
        </figcaption>
  </figure>
  <figure class="picture">
    <img src="https://unsplash.it/600/300?image=696" alt="" />
    <figcaption>
      <div class="vertical-align">
      <h2>image title</h2>
      <p>Nesciunt porro nihil fuga corrupti culpa, alias qui, repellat id consequuntur cum a.</p>
      <a href="">view more</a>
      </div>
        </figcaption>
  </figure>
  <figure class="picture">
    <img src="https://unsplash.it/600/300?image=813" alt="" />
    <figcaption>
      <div class="vertical-align">
      <h2>image title</h2>
      <p>Soluta quo id porro cum impedit voluptatem quae commodi debitis quos consectetur!</p>
      <a href="">view more</a>
      </div>
        </figcaption>
  </figure>
  <figure class="picture">
    <img src="https://unsplash.it/600/300?image=876" alt="" />
    <figcaption>
      <div class="vertical-align">
      <h2>image title</h2>
      <p>Veniam dignissimos saepe illo ipsa voluptates culpa neque ad corrupti?</p>
      <a href="">view more</a>
      </div>
        </figcaption>
  </figure>
</section>
html {
  box-sizing: border-box;
}
*, *:before, *:after {
  box-sizing: inherit;
}

body{
  font-family: serif;
}

figure{
  position:relative;
  width: 50%;
  float: left;
  margin: 0;
  padding: 0;
  text-align: center;
  background: FIREBRICK;
  p {
    padding: 0 1em;
  }
}

img{
  display: block;
  width: 100%;
  transition:opacity .2s ease-in-out;
  backface-visibility: hidden;
  transform-style: preserve-3d;
}

a{
  color:inherit;
  text-decoration: none;
  display: inline-block;
  vertical-align: middle;
  &:before{
    content:'→';
    display: inline-block;
    vertical-align: middle;
    padding-right: 1em;
    margin-right: -2em;
    opacity: 0;
    visibility: hidden;
    transition: all .2s ease-out;
  }
}

figcaption{
  font-size: .8rem;
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  padding: 2em;
  color: #fff;
  backface-visibility: hidden;
  
  &:before,
  &:after{
    position: absolute;
    top: 30px;
    right: 30px;
    bottom: 30px;
    left: 30px;
    content: '';
    opacity: 0;
    transition: opacity 0.35s, transform 0.5s;
  }
  &:before{
    border-top: 1px solid #fff;
    border-bottom: 1px solid #fff;
    transform: scale(0,1);
  }
  &:after{
    border-right: 1px solid #fff;
    border-left: 1px solid #fff;
    transform: scale(1,0);
  }
}

figure:hover{
  img{
    opacity: .5;
  }
  
  figcaption:before,
  figcaption:after{
    opacity: 1;
    transform: scale(1);
  }
  
  figcaption a:before{
    opacity: 1;
    visibility: visible;
    margin-right: 0;
  }
}

.vertical-align{
  position: relative;
  top:50%;
  transform: translateY(-50%);
  transform-style: preserve-3d;
  backface-visibility: hidden;
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.