Image over Text Hover

Read more & Inner border Hover

by avgustre

HTML

<div class="butFrame">
    <img src="https://unsplash.it/g/400/300/?random" />
    <div class="butTextWrap">
      <div class="butHeading">Heading
        <br />
        <div class="butText">Sub Heading</div>
      </div>
      <p>Read More...</p>
    </div>
  </div>

CSS

/* FOR CODEPEN PRESENTATION ONLY */

body {
  font-family: 'open sans';
  max-width: 1200px;
  margin: 60px auto;
}

.buttons {
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
  -webkit-align-items: flex-start;
  -ms-flex-align: start;
  align-items: flex-start;
}

/* PASTE BELOW IN CSS */

.buttons * {
  transition: all .5s ease;
}

.buttons {
  -webkit-justify-content: space-between;
  -ms-flex-pack: justify;
  justify-content: space-between;
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
}

/* Common style */

.butFrame {
  position: relative;
  overflow: hidden;
  margin: 5px;
  width: 24%;
  background: #111;
  font-family: inherit;
  font-size: 1em;
  text-align: center;
  cursor: pointer;
}

.butFrame img {
  position: relative;
  display: block;
  max-width: 100%;
  opacity: 0.8;
  position: absolute;
}

.buttons>.butHeading {
  clear: both;
  margin: 0;
  padding: 4em 1% 0;
  color: #484B54;
  font-weight: 800;
  font-size: 1.5em;
}

#buttons>.butHeading:first-child {
  padding-top: 0em;
}

.butFrame .butTextWrap {
  font-family: inherit;
  padding: 2em;
  color: #fff;
  text-transform: uppercase;
  font-size: 1.25em;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

.butFrame .butTextWrap::before,
.butFrame .butTextWrap::after {
  pointer-events: none;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

}

.butFrame .butTextWrap,
.butFrame .butTextWrap>a {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

/* Anchor will cover the whole item by default */

.butFrame .butTextWrap>a {
  z-index: 1000;
  text-indent: 200%;
  white-space: nowrap;
  font-size: 0;
  opacity: 0;
}

.butFrame .butHeading {
  word-spacing: -0.15em;
  font-weight: 800;
  font-size: 18px;
  font-family: inherit;
}

.butFrame .butHeading .butText {
  font-weight: 300;
}

.butFrame .butHeading,
.butFrame p {
  margin: 0;
  color: #fff;
}

.butFrame p {
  letter-spacing: 1px;
 ...