あなたのキモチ つなげるカタチ

TOP > CSS > 【CSS】画像の上を単色の背景が斜めに移動するカーテンアニメーション/CSS Curtain Sliding Background Color(skew)

【CSS】画像の上を単色の背景が斜めに移動するカーテンアニメーション/CSS Curtain Sliding Background Color(skew)

スポンサーリンク

実装内容

前回に引き続きカーテンアニメーションの紹介です。斜めにカーテンアニメーションが走ります。

実装所要時間:15分程度

実装方法

.block {
  position: relative;
  display: block;
  width: 768px;
  height: 100%;
  line-height: 0;
  overflow: hidden;
  margin: 50px auto 0;
}

.block img {
  width: 100%;
}

.block:after {
  content: "";
  position: absolute;
  top: -100%;
  left: -100%;
  transform: skew(30deg);
  width: 205%;
  height: 205%;
  background: #fff;
}

.active.block:after {
  top: 350%;
  left: -350%;
  transition: all 1s cubic-bezier(.645, .045, .355, 1);
}

@media screen and (max-width:640px){
  .block {
    width: 100%;
  }
}

【簡単な解説】
画像を囲むdivにwidthとposition:relative;を指定
divのafterへ斜めにスライドさせる背景色をセット。色は画像があるセクションの背景色を指定。
afterへはdisplay: block;でブロック要素にしておきます。
また、画像サイズに対して余分に覆うためにwidthとheightを200%以上に指定。
これで、画像の上を指定した背景色が完全に覆っている状態になります。
最後にafterへaddClassでactiveというクラスを付与して、topとleftの位置を移動させます。
ポイントはtransform: skew(30deg)で台形のように要素を傾斜変形させていることです。
transitionでアニメーションをつけて、topとleftの位置が変わるので斜めに動いているように見えます。
afterのtopとleft、widthとheightは画像の比率、サイズによって調整する必要があるので要注意です。

スポンサーリンク