<a href="#" title="HTML is a language for web page markup"><img src="http://vavik96.com/wp-content/uploads/2014/12/3352.jpg" alt=""></a>
a {
  text-align: center;
  display: inline-block;
  overflow: hidden;
  position: relative;
  text-decoration: none;
}

a:before {
  display: block;
  background-color: rgb(0, 0, 0);
  content: "";
  height: 100%;
  opacity: 0;
  position: absolute;
  width: 100%;
  z-index: 2;
}

a:after {
  font-family: Tahoma;
  color: white;
  content: attr(title);
  display: block;
  font-size: 30px;
  font-weight: bold;
  opacity: 0;
  padding: 0 3%;
  position: absolute;
  text-transform: uppercase;
  top: 50%;
  -webkit-transform-origin: 50% 0%;
  -ms-transform-origin: 50% 0%;
  transform-origin: 50% 0%;
  -webkit-transform: scale(0) translateY(-50%);
  -ms-transform: scale(0) translateY(-50%);
  transform: scale(0) translateY(-50%);
  width: 94%;
  z-index: 3;
}

a img {
  border: none;
  display: block;
  z-index: 1;
}

a:after {
  -webkit-transition: all 350ms ease-in-out;
  -moz-transition: all 350ms ease-in-out;
  -o-transition: all 350ms ease-in-out;
  transition: all 350ms ease-in-out;
}

a:hover:before {
  opacity: 0.6;
}

a:hover:after {
  opacity: 1;
  -webkit-transform: scale(1) translateY(-50%);
  -ms-transform: scale(1) translateY(-50%);
  transform: scale(1) translateY(-50%);
}

/* А вот дополнительные стили, которые позволят поворачивать текст во время анимации: */
a:after {
  -webkit-transform: scale(0) rotate(-360deg) translateY(-50%);
  -ms-transform: scale(0) rotate(-360deg) translateY(-50%);
  transform: scale(0) rotate(-360deg) translateY(-50%);
}

a:hover:after {
  -webkit-transform: scale(1) rotate(0deg) translateY(-50%);
  -ms-transform: scale(1) rotate(0deg) translateY(-50%);
  transform: scale(1) rotate(0deg) translateY(-50%);
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.