Wobbling Vertical Progress Bar
I learned how to build a neat, dynamically sized vertical progress bar with cross-bars in This Question.
No
Really enjoyed playing with this, so thank you :) I took a different approach but with much less code. I think I went a bit overboard with the colors, if needed I can change it back to red yellow green.
http://jsfiddle.net/3wN77/23/
$('#change-height').on('click', function() {
var element = $('.attendance-level');
var height = parseInt( $('#true-height').val() ); // %
var speed = 1000; //ms
var random = 50; //px
bar_wobble( element, height, speed, random );
});
function bar_wobble(element, height, speed, random) {
//set the color
$(element).css('-webkit-filter','hue-rotate('+ 140*(250/height) +'deg)'); //red = 0 deg, green = 140deg
//wibbly wobbly timey wimey stuff
height = height/100*250;
var number_of_wobbles = 3;
for(var i=1; i<=number_of_wobbles; i++)
{ $(element).animate({ height: (height + random/i )+'px'}, speed/(number_of_wobbles*2 + 1));
$(element).animate({ height: (height - random/i )+'px'}, speed/(number_of_wobbles*2 + 1));
console.log( {i: i, random_i: random/i, random:random, height:height } );
}
$(element).animate({ height: height+'px'}, speed/(number_of_wobbles*2 + 1));
}
Don't think StackOverflow is meant for these kind of 'questions', but oh well, felt like it, so made a far more extensive answer than a sane person would.
Let me start with a couple of technologies I incorporated and their justification
X-Tags, X-tags is a Web Components Custom Element polyfill developed by Mozilla. It allows us to write something like
<x-bar id="test"></x-bar>
And then do
var xbar1 = document.getElementById("test");
xbar1.value = 10;
xbar1.speed = 2;
xbar1.wobble = 10;
xbar1.effect= "dampen";
Cool right? This however means you will first need to read the documentation here. Before you will be able to understand the code.
y=sin(t)
and a more complexed dampened wave. One could easily add other waves as well, but these seemed to be the most reasonably interesting ones.As the code itself is over 200 lines long I will refrain from posting it here and you can find it on this jsfiddle.
So here's my JSFiddle take on it.
Comments should be self explanatory. I had to add JQuery UI for the animation effects with easing. I'm not sure what you meant by random
, but speed should be all you need to change.
Sorry, no animation in the screenshots.