プラグインとサンプルのURLと一部抜粋の少ない情報から、脳内補完して、ちゃんと動くコードを組みました。
まず、CSS AnimationとjQueryのanimate()は相性が悪いようでCSS Animationが2回実行されてしまいます。
なので、CSS Animationは止めて、jQueryのanimate()を複数同時に実行することで問題の解決としました。
キモになるのはanimate()にキューイングをfalseに設定することで、複数のanimateメソッドを同時に実行できるということです。
CSSのanimationにアニメーション名を複数カンマで区切って書いても複数アニメーションを同時実行可能ですが、spotlightのアニメーション名が分からなかったのでjQueryで統一しました。
以下がそのコードになります。面倒なのでHTML、CSS、JavaScriptを一つにまとめてあります。
詳細は、コードのコメントを見てください。
HTML
1<!DOCTYPE html>
2<html lang="ja">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
7 <title>spotlight-test</title>
8 <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
9 <!--jQueryには2つしかないeasingを32パターンにまで拡張するプラグインの読み込み-->
10 <!--詳細は http://semooh.jp/jquery/cont/doc/easing/ を参照のこと-->
11 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
12 <!--spotlightプラグインの読み込み-->
13 <script src="jquery.animations.min.js"></script>
14 <script src="jquery.animations-spotlight.js"></script>
15</head>
16<body>
17 <style>
18 /* postheaderクラスの子要素なので.postheaderから始める。その子要素なので間に半角スペースを入れなければならない。*/
19 /* postheaderクラスの子要素のうちimgタグであるので半角スペースの後にタグ名imgを書く。*/
20 /* imgタグの中でもpfrontクラスが同時に指定されているもののみ対象とするので.pfrontをスペースを入れずに書く、この場合は同一要素内での指定になる*/
21 /* したがって正しいセレクタの書き方は .postheader img.pfront となる。*/
22 /* 参考: http://weboook.blog22.fc2.com/blog-entry-268.html */
23
24 .postheader img.pfront {opacity: 0;}
25 /*.pfront {animation: fadeIn 8s ease-out 1s 1 normal forwards;}*/
26
27 /*@keyframes fadeIn {*/
28 /*from{opacity:0;} transform: translateY(0); filter: brightness(50%) invert(1);}*/
29 /*5%{opacity:0;} transform: translateY(0); filter: brightness(0) invert(1);}*/
30 /*to{opacity:1;} transform: translateY(0); filter: brightness(0) invert(1);}*/
31 /*}*/
32 </style>
33 <div class="postheader">
34 <div id="inner"> <!-- innerはidで指定されている-->
35 <img class="pfront" src="img.svg">
36 </div>
37 </div>
38 <script>
39 //idで指定されているinnerはidであることを教えるために先頭に#をつける
40 //classで指定した場合は先頭に.をつける
41 //タグの時は直接タグ名を書けばいいが全ての同じタグに適用されるので使いどころが難しい
42
43 //spotlightのアニメーション設定&実行
44 $('#inner').animate('spotlight', {
45 "duration": 5500,
46 "delay": 0,
47 "repeat":0,
48 "count": 6,
49 "radius": 200,
50 "stopX": 0,
51 "queue": false //キューイングをfalseに設定することで、複数のanimateメソッドを同時に実行できる
52 });
53
54 //keyframeの設定と構築
55 var keyframes = {};
56 keyframes['0%'] = { transform: 'translateY(0) ', filter: 'brightness(50%) invert(1)' };
57 keyframes['5%'] = { transform: 'translateY(0) ', filter: 'brightness(0) invert(1)' };
58 keyframes['100%'] = { transform: 'translateY(0) ', filter: 'brightness(0) invert(1)' };
59
60 //背景の絵のアニメーション設定&実行
61 $(".pfront").animate({opacity:1} , {
62 "duration": 8000,
63 "easing": "easeInOutQuad",
64 "delay": 1000,
65 "count": 1,
66 "direction": "normal",
67 "fillMode": "forwards",
68 "queue": false, //キューイングをfalseに設定することで、複数のanimateメソッドを同時に実行できる
69 "keyframes": keyframes
70 });
71 </script>
72</body>
73</html>
jQuery日本語リファレンス Easing/jQuery
意外と知らない!?CSSセレクタ20個のおさらい
プラグインなどはダウンロードして同一フォルダにいれたので、ご自分の環境に合わせて修正してください。
コードブロックの右上のアイコンをクリックするとコード全体をコピーできるので、ご自分の環境に張り付けて、動作確認してみてください。