大阪府堺市のWEB制作(ホームページ制作)事務所です

画像のマスク風スライドエフェクト

最終更新日:2022.05.23 [月] 公開日:2020.04.18 [土] カテゴリー:html・CSS・jQuery・JS備忘

最近とてもよく見る気がするのですが、この表現方法、エフェクトの名前なんて言うのかわかりません。マスクっぽいのが画像の上をスライドして、画像が見えてくるエフェクトです。やり方どうするのかわからなくて試行錯誤して、なんとなくそれっぽくなった?と言う方法の備忘録です。もっと良い方法があるかもですが、私なりの精一杯の試行錯誤。



まずはDEMO

https://chakoiro.net/demo/slide/

仕組みとしては以下の通りです。

用意するもの

・scrolla.min.js
↑これはスクロールで発火させるためのjsです、詳細はちょっと割愛。

JS




jquery.scrolla.min.jsを読み込んで、そのあと動くように設定します。オプションなどは、公式サイトを。

取り敢えず今回はanimateというクラス名をつけたものがスクロールで発火するようにしています。

CSS

.color {
    width: 30%;
    overflow: hidden;
    position: relative;
}
.color img {
    width: 100%;
    height: auto;
    position: absolute;
    left: 0;
    top: 0;
}
.color img:first-child {
    z-index: 3;
    height: 100% !important;
}
.color :last-child {
    z-index: 2;
    position: relative;
}
.animate__move {
    -webkit-animation-name: move;
    animation-name: move;
    animation-fill-mode: forwards;
    animation-timing-function: ease;
}
@keyframes move {
    0% {
        -webkit-transform: translateX(0%);
        -ms-transform: translateX(0%);
        transform: translateX(0%);
    }
    30% {
        -webkit-transform: translateX(0%);
        -ms-transform: translateX(0%);
        transform: translateX(0%);
    }
    70% {
        -webkit-transform: translateX(102%);
        -ms-transform: translateX(102%);
        transform: translateX(102%);
    }
    100% {
        -webkit-transform: translateX(102%);
        -ms-transform: translateX(102%);
        transform: translateX(102%);
    }
}
.animate__move2 {
    -webkit-animation-name: move2;
    animation-name: move2;
    animation-fill-mode: forwards;
}
@keyframes move2 {
    0% {
        opacity: 0;
    }
    30% {
        opacity: 0;
    }
    50% {
        opacity: 1;
    }
    50% {
        opacity: 1;
        transform: scale(1);
    }
    70% {
        opacity: 1;
        transform: scale(1);
    }
    100% {
        opacity: 1;
        transform: scale(1.2);
    }
}

↑見ての通りなかなかの力技で。

HTML

class=”animate” data-animate=”move2″ data-duration=”3s” data-delay=”0.5s”

これらはscrolla.min.jsの設定です。
data-animate:動かすアニメーションを指定するクラス
data-duration:アニメーションする長さ
data-delay:発火ポイントに入って動き出すまでの待機時間

なんとなくこれでよく見るマスクがスライドして画像が表示されるっぽいのができます。

もっとスマートな方法があるかもなのですが・・・。


スポンサーリンク

コメントを残す