var app = angular.module('app', []);
app.controller('AppController', ['$scope', '$getsvg', '$interval',
function($scope, $getsvg, $interval)
{
// Get SVG
$getsvg.then(function(response) {
var items = [];
angular.forEach(response.data.feed.entry, function(value, key) {
this.push({
svg: value['gsx$svg']['$t'],
hex: value['gsx$hex']['$t']
});
}, items);
$scope.items = items;
});
}
]);
app.factory('$getsvg', ['$http',
function($http)
{
var url = 'https://spreadsheets.google.com/feeds/list/1hajansd_PujIMHSBcYUo7RNCIdHYIFYWAJHEVRqE4rc/od6/public/values?alt=json';
return $http.get(url);
}
]);
@-webkit-keyframes anim {
0% {
opacity: 0;
-webkit-transform: translate3d(1028%, 1563%, 0);
transform: translate3d(1028%, 1563%, 0);
}
30%, 70% {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
100% {
opacity: 0;
-webkit-transform: translate3d(978%, -1544%, 0);
transform: translate3d(978%, -1544%, 0);
}
}
@keyframes anim {
0% {
opacity: 0;
-webkit-transform: translate3d(954%, 1346%, 0);
transform: translate3d(954%, 1346%, 0);
}
30%, 70% {
opacity: 1;
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
100% {
opacity: 0;
-webkit-transform: translate3d(1055%, 721%, 0);
transform: translate3d(1055%, 721%, 0);
}
}
body {
background: #1a1a1a;
display: flex;
align-items: center;
justify-content: center;
min-height: 100vh;
}
svg {
height: 100%;
left: 0;
position: relative;
width: 100%;
}
svg polygon {
opacity: 0;
transform-box: fill-box;
-webkit-animation: anim 6s ease-in-out infinite;
animation: anim 6s ease-in-out infinite;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<div ng-app="app" ng-controller="AppController">
<svg viewBox="0 0 605 804">
<polygon ng-repeat="item in items" ng-class="item.class" fill="{{item.hex}}" points="{{item.svg}}"/>
</svg>
</div>