Skip to content

Commit

Permalink
finish pacman and grid loader
Browse files Browse the repository at this point in the history
  • Loading branch information
greyby committed Dec 28, 2015
1 parent 3d2edae commit 2ab948e
Show file tree
Hide file tree
Showing 9 changed files with 1,093 additions and 283 deletions.
1,004 changes: 744 additions & 260 deletions dist/vue-spinner.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/vue-spinner.js.map

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions dist/vue-spinner.min.js

Large diffs are not rendered by default.

32 changes: 18 additions & 14 deletions example/app.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
Vue.config.debug = true // turn on debugging mode
var PulseLoader = VueSpinner.PulseLoader
var ScaleLoader = VueSpinner.ScaleLoader
var GridLoader = VueSpinner.GridLoader
var ClipLoader = VueSpinner.ClipLoader
var RiseLoader = VueSpinner.RiseLoader
var BeatLoader = VueSpinner.BeatLoader
var SyncLoader = VueSpinner.SyncLoader
var RotateLoader = VueSpinner.RotateLoader
var FadeLoader = VueSpinner.FadeLoader
var PacmanLoader = VueSpinner.PacmanLoader
var SquareLoader = VueSpinner.SquareLoader
var ScaleLoader = VueSpinner.ScaleLoader
var SkewLoader = VueSpinner.SkewLoader
var MoonLoader = VueSpinner.MoonLoader
var RingLoader = VueSpinner.RingLoader
Expand All @@ -18,19 +20,21 @@ new Vue({
el: '#app',
components: {
PulseLoader,
ScaleLoader,
ClipLoader,
RiseLoader,
BeatLoader,
SyncLoader,
RotateLoader,
FadeLoader,
SquareLoader,
SkewLoader,
MoonLoader,
RingLoader,
BounceLoader,
DotLoader
GridLoader,
ClipLoader,
RiseLoader,
BeatLoader,
SyncLoader,
RotateLoader,
FadeLoader,
PacmanLoader,
SquareLoader,
ScaleLoader,
SkewLoader,
MoonLoader,
RingLoader,
BounceLoader,
DotLoader
},
data () {
return {
Expand Down
4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ <h4>vue-spinner</h4>
<pulse-loader :color="color" :height="height" :width="width" :margin="margin" :radius="radius"></pulse-loader>
</li>
<li class="spinner-list">
<scale-loader></scale-loader>
<grid-loader></grid-loader>
</li>
<li class="spinner-list">
<clip-loader></clip-loader>
Expand All @@ -47,7 +47,7 @@ <h4>vue-spinner</h4>
<fade-loader></fade-loader>
</li>
<li class="spinner-list">
<scale-loader></scale-loader>
<pacman-loader></pacman-loader>
</li>
<li class="spinner-list">
<square-loader></square-loader>
Expand Down
181 changes: 181 additions & 0 deletions src/GridLoader.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
<template>
<div class="v-spinner" v-bind:style="containerStyle">
<div class="v-grid v-grid1" v-bind:style="[spinnerStyle,animationStyle,animationStyle1]">
</div><div class="v-grid v-grid2" v-bind:style="[spinnerStyle,animationStyle,animationStyle2]">
</div><div class="v-grid v-grid3" v-bind:style="[spinnerStyle,animationStyle,animationStyle3]">
</div><div class="v-grid v-grid4" v-bind:style="[spinnerStyle,animationStyle,animationStyle4]">
</div><div class="v-grid v-grid5" v-bind:style="[spinnerStyle,animationStyle,animationStyle5]">
</div><div class="v-grid v-grid6" v-bind:style="[spinnerStyle,animationStyle,animationStyle6]">
</div><div class="v-grid v-grid7" v-bind:style="[spinnerStyle,animationStyle,animationStyle7]">
</div><div class="v-grid v-grid8" v-bind:style="[spinnerStyle,animationStyle,animationStyle8]">
</div><div class="v-grid v-grid9" v-bind:style="[spinnerStyle,animationStyle,animationStyle9]">
</div>
</div>
</template>

<script>
export default {
name: 'GridLoader',
props: {
color: {
type: String,
default: '#5dc596'
},
size: {
type: String,
default: '15'
},
margin: {
type: String,
default: '2'
},
radius: {
type: String,
default: '100%'
}
},
data () {
return {
spinnerStyle: {
backgroundColor: this.color,
width: this.size + 'px',
height: this.size + 'px',
margin: this.margin + 'px',
borderRadius: this.radius
}
}
},
computed: {
animationStyle () {
return {
animationName: 'v-gridStretchDelay',
animationIterationCount: 'infinite',
animationTimingFunction: 'ease',
animationFillMode: 'both',
display: 'inline-block'
}
},
animationStyle1 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle2 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle3 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle4 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle5 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle6 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle7 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle8 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
animationStyle9 () {
return {
animationDelay: this.delay(),
animationDuration: this.duration()
}
},
containerStyle () {
return {
width: this.size * 3 + this.margin * 6 + 'px',
fontSize: 0
}
}
},
methods: {
random (value) {
return Math.random() * value
},
delay () {
return ((this.random(100) / 100) - 0.2) + 's'
},
duration () {
return ((this.random(100) / 100) + 0.6) + 's'
},
}
}
</script>

<style>
@-webkit-keyframes v-gridStretchDelay
{
0%
{
-webkit-transform: scale(1);
transform: scale(1);
}
50%
{
-webkit-transform: scale(0.5);
transform: scale(0.5);
-webkit-opacity: 0.7;
opacity: 0.7;
}
100%
{
-webkit-transform: scale(1);
transform: scale(1);
-webkit-opacity: 1;
opacity: 1;
}
}
@keyframes v-gridStretchDelay
{
0%
{
-webkit-transform: scale(1);
transform: scale(1);
}
50%
{
-webkit-transform: scale(0.5);
transform: scale(0.5);
-webkit-opacity: 0.7;
opacity: 0.7;
}
100%
{
-webkit-transform: scale(1);
transform: scale(1);
-webkit-opacity: 1;
opacity: 1;
}
}
</style>
132 changes: 132 additions & 0 deletions src/PacmanLoader.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
<template>
<div class="v-spinner" v-bind:style="{position: 'relative', fontSize: 0}">
<div class="v-pacman v-pacman1" v-bind:style="spinnerStyle1">
</div><div class="v-pacman v-pacman2" v-bind:style="[spinnerStyle,animationStyle,spinnerDelay2]">
</div><div class="v-pacman v-pacman3" v-bind:style="[spinnerStyle,animationStyle,spinnerDelay3]">
</div><div class="v-pacman v-pacman4" v-bind:style="[spinnerStyle,animationStyle,spinnerDelay4]">
</div><div class="v-pacman v-pacman5" v-bind:style="[spinnerStyle,animationStyle,spinnerDelay5]">
</div>
</div>
</template>

<script>
export default {
name: 'PacmanLoader',
props: {
color: {
type: String,
default: '#5dc596'
},
size: {
type: String,
default: '25'
},
margin: {
type: String,
default: '2px'
},
radius: {
type: String,
default: '100%'
}
},
data () {
return {
spinnerDelay2: {
animationDelay: '0.25s'
},
spinnerDelay3: {
animationDelay: '0.50s'
},
spinnerDelay4: {
animationDelay: '0.75s'
},
spinnerDelay5: {
animationDelay: '1s'
}
}
},
computed: {
spinnerStyle () {
return {
backgroundColor: this.color,
width: this.size,
height: this.size,
margin: this.margin,
borderRadius: this.radius,
}
},
border1 () {
return this.size + 'px solid transparent'
},
border2 () {
return this.size + 'px solid ' + this.color
},
spinnerStyle1 () {
return {
width: 0,
height: 0,
borderTop: this.border2,
borderRight: this.border1,
borderBottom: this.border2,
borderLeft: this.border2,
borderRadius: this.size + 'px'
}
},
animationStyle () {
return {
width: '10px',
height: '10px',
transform: 'translate(0, '+ -this.size/4 + 'px)',
position: 'absolute',
top: '25px',
left: '100px',
animationName: 'v-pacmanStretchDelay',
animationDuration: '1s',
animationIterationCount: 'infinite',
animationTimingFunction: 'linear',
animationFillMode: 'both'
}
}
}
}
</script>

<style>
.v-spinner
{
text-align: center;
}
@-webkit-keyframes v-pacmanStretchDelay
{
75%
{
-webkit-opacity: 0.7;
opacity: 0.7;
}
100%
{
-webkit-transform: translate(-100px, -6.25px);
transform: translate(-100px, -6.25px);
}
}
@keyframes v-pacmanStretchDelay
{
75%
{
-webkit-opacity: 0.7;
opacity: 0.7;
}
100%
{
-webkit-transform: translate(-100px, -6.25px);
transform: translate(-100px, -6.25px);
}
}
</style>
Loading

0 comments on commit 2ab948e

Please sign in to comment.