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

スライドショー:時間差で要素を出す方法(slick使用)

最終更新日:2022.05.23 [月] 公開日:2020.04.06 [月] カテゴリー:html・CSS・jQuery・JS備忘, 便利なプラグイン・ジェネレーター

これは説明するよりもDEMOを見ていただいた方がわかりやすいと思うので早速DEMOです。

DEMO : https://chakoiro.net/demo/slick/slide_test.html

こちら説明するまでもないのですが、メイン画像(色ついてる背景みたいなの)が切り替わりつつ、丸い輪っかが時間差で縮んでいくのがわかるでしょうか?

このデモでは輪っかにしましたが、キャッチコピーでも別の画像でも何でも応用できると思います。

仕組みは至って簡単で・・・と言うか、力技。



html

これは特に説明するまでもなく、sliderという大きな枠で括って、スライドの要素を並べているだけですね。

	  

css

これも説明するほどではなくて・・・各要素にkeyframeでアニメーションを当てているだけです。

.mv {
    position: relative;
}
.slick-active .ph {
    animation: zoom1 2s ease 0s 1 normal both;
}
	
.slick-active .deco1 {
    background-color: #ccc;
    border-radius: 300px;
    width: 100px;
    height: 100px;
    position: absolute;
    top: 100px;
    left: 100px;
    animation: zoom2 1s ease 1s 1 normal both;
}
.slick-active .deco2 {
    background-color: #ddd;
    border-radius: 300px;
    width: 100px;
    height: 100px;
    animation: zoom3 1s ease 0.5s 1 normal both;
    position: absolute;
    top: 300px;
    left: 400px;
}
.slick-active .deco3 {
    background-color: #ddd;
    border-radius: 300px;
    width: 100px;
    height: 100px;
    animation: zoom3 1s ease 0s 1 normal both;
    position: absolute;
    top: 100px;
    left: 600px;
}
@keyframes zoom1 {
0% {
transform: scale( 1.2 );
opacity:0;
}
100% {
transform: scale( 1 );
opacity:1;
}
}
@keyframes zoom2 {
0% {
transform: scale( 3 );
opacity:0;
}
70% {
transform: scale( 2 );
opacity:1;
}
100% {
transform: scale( 1 );
opacity:0;
}
}
@keyframes zoom3 {
0% {
transform: scale( 2 );
opacity:0;
}
70% {
transform: scale( 1 );
opacity:1;
}
100% {
transform: scale( 0.5 );
opacity:0;
}
}

たとえば、

.slick-active .ph {
animation: zoom1 2s ease 0s 1 normal both;
}

これは、詳しくはこのanimationのまとめを見たらわかるのですが、
animation: nameの値 durationの値 timingの値 delayの値 iterationの値 directionの値 fillの値 playの値 ;

と言うルールで当てています。

これで言うと、スタイルシートで指定してるzoom1のアニメーションをduration2秒、つまりアニメの長さ2秒かけてしてください、easeの動きで、delayつまり待機時間は0秒(=すぐスタートさせる)・・・と言うような指示です。

.slick-activeというのは、そのスライドがアクティブになった時につくクラスです、アクディブになったら開始させるために.phの前に.slick-activeをつけています。

他の要素も同じ理屈でアニメーションしています。

時間差をつけてるのは、animation:;で指示する時に、delayとdurationで調整しています。

JS




 

唯一気をつけるのは、先程のスタイルシートの長さとslickのautoplay長さ、slicの長さがanimationより短くなると、当然プツッと切れてしまうので・・・

説明が雑すぎてすみません・・・

そして力技ですみません。


スポンサーリンク

コメントを残す