Ajax Loader
HTML
 
1
 
2
<div id="container">
3
<script class="cssdeck" src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.2.2/underscore-min.js"></script>
4
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.5.1.min.js"></script>
 
JavaScript
(function() {
1
(function() {
2
  var face = [
3
    188, 489, 177, 500, 177, 566, 254, 643, 254, 621, 199, 566,
4
    265, 566, 265, 588, 254, 621, 254, 632, 265, 621,
5
    288, 621, 298, 632, 298, 621, 287, 588, 287, 566,
6
    353, 566, 298, 621, 298, 643, 375, 566, 375, 500, 364, 489,
7
    364, 511, 353, 522, 342, 511, 342, 500, 331, 500, 331, 489, 320, 489, 309, 478,
8
    243, 478, 232, 489, 221, 489, 221, 500, 210, 500, 210, 511, 199, 522, 188, 511
9
  ];
10
  var faceComponents = [
11
    [188, 489, 188, 467, 199, 456, 221, 456, 243, 478, 199, 478],
12
    [364, 489, 364, 467, 353, 456, 331, 456, 309, 478, 353, 478],
13
    [257, 569, 256, 571, 256, 588, 243, 588, 243, 582],
14
    [295, 569, 292, 571, 292, 588, 309, 588, 309, 582]
15
  ];
16
 
17
  var tail = [ // Clockwise from bottom, always from top-left/-most corner of polygon
18
    [120, 518, 155, 472, 166, 472, 132, 522],
19
    [114, 480, 136, 462, 142, 465, 121, 487],
20
    [73, 465, 133, 438, 146, 438, 87, 478],
21
    [69, 431, 114, 420, 114, 425, 78, 445],
22
    [35, 398, 128, 392, 128, 405, 49, 418],
23
 
24
    [31, 361, 91, 366, 96, 377, 31, 377],
25
    [14, 312, 107, 332, 107, 339, 7, 339],
26
    [20, 278, 86, 299, 93, 312, 20, 292],
27
    [7, 199, 100, 279, 100, 292, 0, 226],
28
    [27, 172, 99, 246, 92, 252, 27, 193],
29
 
30
    [42, 126, 128, 232, 121, 246, 27, 146],
31
    [85, 100, 135, 193, 128, 206, 71, 119],
32
    [128, 49, 171, 193, 164, 199, 99, 60],
33
    [186, 33, 200, 159, 186, 166, 157, 46],
34
    [251, 0, 243, 166, 222, 173, 215, 7],
35
 
36
    [281, 10, 317, 10, 281, 143, 266, 143],
37
    [351, 7, 387, 13, 323, 159, 301, 166],
38
    [421, 33, 450, 46, 371, 159, 356, 153],
39
    [481, 60, 510, 80, 387, 199, 373, 186],
40
    [525, 106, 541, 142, 439, 206, 425, 186],
41
 
42
    [567, 159, 582, 193, 438, 266, 431, 239],
43
    [575, 223, 582, 256, 474, 292, 467, 266]
44
  ];
45
 
46
 
47
 
48
  var stage = new Kinetic.Stage({
49
    container: 'container',
50
    width: 800,
51
    height: 600
52
  });
53
 
54
  var tailLayer = new Kinetic.Layer();
55
  var faceLayer = new Kinetic.Layer();
56
 
57
  var sizeMultiplier = .6;
58
  var animationMultiplier = 30;
59
 
60
  var fadeInTail = function(section, timeout) {
61
    setTimeout(function() {
62
      new Kinetic.Tween({
63
        node: section,
64
        opacity: 1,
65
        duration: .25
66
      }).play();
67
    }, timeout);
68
  };
69
 
70
  var fadeInFace = function(section, timeout) {
71
    faceLayer.add(section);
72
    setTimeout(function() {
73
      new Kinetic.Tween({
74
        node: section,
75
        opacity: 1,
76
        duration: .5
77
      }).play();
78
    }, timeout);
79
  }
80
 
81
  var positionedPoints = function(points) {
82
    return _.map(points, function(num, key) {
83
      if (key % 2 === 0) { // x
84
        return (num + 100) * sizeMultiplier;
85
      } else { // y
86
        return (num + 100) * sizeMultiplier;
87
      }
88
 
89
    });
90
  }
91
 
92
  for (var i = 0; i < tail.length; i++) {
93
    var rect = new Kinetic.Polygon({
94
      points: positionedPoints(tail[i]),
95
      fill: '#dd4814',
96
      opacity: 0
97
    });
98
    tailLayer.add(rect);
99
    fadeInTail(rect, i * animationMultiplier);
100
  }
101
 
102
  var facePoly = new Kinetic.Polygon({
103
    points: positionedPoints(face),
104
    fill: '#dd4814',
105
    opacity: 0
106
  });
107
  fadeInFace(facePoly, tail.length * animationMultiplier);
108
 
109
  for (var i = 0; i < faceComponents.length; i++) {
110
    var component = new Kinetic.Polygon({
111
      points: positionedPoints(faceComponents[i]),
112
      fill: '#dd4814',
113
      opacity: 0
114
    });
115
    fadeInFace(component, (tail.length * animationMultiplier) + 250);
116
  }
117
 
118
  stage.add(tailLayer);
119
  stage.add(faceLayer);
120
})();
 

Ringtail Animation

CSSDeck G+