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

【CSS】画像の上に重ねたカラーが光沢感を出しながらスライドした後に画像を表示させるカーテンアニメーションの実装方法

コーディングテクニックの実装内容

今回はWeb制作におけるCSSアニメーションの中でカーテンアニメーションに関する内容です。画像の上に重ねたカラーが光沢感を出しながらスライドした後に画像を表示させるカーテンアニメーションの実装方法を紹介します。

コーディングテクニックの使いどころ

スクロールをして画像が見えたらアニメーションを実行させるのが一般的な使い方となります。

実装難易度・必要なスキル

コーディングとjQueryの基礎的な知識があれば実務未経験のコーダー、マークアップエンジニア、Webデザイナー、エンジニア、副業の初心者など誰でも実装可能です。

実装所要時間は10分程度

CSS,JavaScriptの記述内容

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

.block img {
  width: 100%;
  transition: 0.8s cubic-bezier(0.82, 0.01, 0.28, 0.99) 0.4s;
  opacity: 0;
}

.active.block img {
  opacity: 1;
}

.block:before {
  content: ' ';
  display: block;
  position: absolute;
  top: 0;
  z-index: 3;
  width: 100%;
  height: 100%;
  opacity: 1;
  background: #55310e;
  transition: 0.8s cubic-bezier(0.82, 0.01, 0.28, 0.99);
  transform: translateX(0%) skewX(0deg);
}

.active.block:before {
  opacity: 0;
  transform: translateX(100%) skewX(-20deg);
}

.block:after {
  content: ' ';
  display: block;
  position: absolute;
  top: 0;
  z-index: 2;
  width: 40%;
  height: 100%;
  opacity: 1;
  background: #fff;
  transition: 1s cubic-bezier(0.82, 0.01, 0.28, 0.99) 0.3s;
  transform: translateX(-120%) skewX(-10deg);
}

.active.block:after {
  opacity: 0;
  transform: translateX(180%) skewX(-30deg);
}

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

実装のポイント

  • 1) imgタグを囲むdivに横幅とposition:relative;を指定
  • 2) divの:beforeにスライドさせる単色を指定。:afterに光沢を指定
  • 3) divに.addClass()でクラスactiveを付与。クラスactiveが付与された:beforeをtransform: translateX(100%) skewX(-20deg)で要素を斜めにしながら画像の右側へ移動させる。0.3秒後にクラスactiveが付与された:afterをtransform: translateX(180%) skewX(-30deg);で要素を斜めにしながら画像の右側へ移動させる
  • 4) :before、:afterをopacity: 0で透明にする

この記事を書いた人(著者情報)

片岡 学

カタチップ編集長。昭和生まれの30代でWeb業界歴は15年。プログラマー出身のWebデザイナー。現在はカタチップを運用しつつ事業会社でWEBメディアサイトのディレクター兼コーダーを担当。最近はSNSの運用にも業務範囲を拡大中です。

著者画像

スポンサーリンク