マウスホバーで画像にスプリットエフェクト

Ads

Result


昔Flash等で少し流行した、画像が分割されるアニメーションエフェクトです
今ではCSSだけで出来るようになりました

css

.card {/*親要素*/
  border-radius: 16px;
  width: 360px;
  height: 360px;
  background: url(https://picsum.photos/400/300);
  position: relative;
  overflow: hidden;

}
.card:before {/*オーバーレイ*/
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  background-color: rgba(0, 0, 0, 0.92);
}
.card .img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  display: flex;
}
.card .img span {/*4つに分割*/
  width: 25%;
  height: 100%;
  background: url(https://picsum.photos/400/300);
  transition: 0.5s;
}

/*1つずつ画像の表示ポジションを設定してアニメーションを遅延させる*/
.card .img span:nth-child(1) {
  background-position: 0;
  transition-delay: 0;
}
.card .img span:nth-child(2) {
  background-position: 33.33%;
  transition-delay: 0.1s;
}
.card .img span:nth-child(3) {
  background-position: 66.66%;
  transition-delay: 0.2s;
}
.card .img span:nth-child(4) {
  background-position: 100%;
  transition-delay: 0.3s;
}

.card:hover .img > span {
  transform: translateY(-100%);
}
.card:hover .content {
  transform: translateY(0%);
  transition: 1s;
  transition-delay: 0.1s;
}

html

<div class="card">
  <div class="img"> <span></span><span></span><span></span><span></span></div>
  <div class="content">
    <h2>hoge</h2>
    <h2>huga</h2>
    <h4>piyopiyo</h4>
  </div>
</div>

空要素が気持ち悪い方には申し訳ありません

via

Split Image on hover