JSFiddle - React, Tailwind, and code Playground
jQuery Animated Bars
by Jennifer Perrin
HTML
<div class="bars">
<div id="bar-1"></div>
<div id="bar-2"></div>
<div id="bar-3"></div>
<div id="bar-4"></div>
<div id="bar-5"></div>
<div id="bar-6"></div>
</div>
CSS
.jqbar {
position: relative;
top: 10px;
}
.jqbar.vertical {
text-align: center;
display: inline-block;
}
.jqbar.vertical span {
display: block;
font-size: 11px;
font-weight: bold;
}
.jqbar.vertical .bar-percent {
font-size: 11px;
font-weight: bold;
position: absolute;
height: 20px;
margin-bottom: 5px;
width: 100%;
}
.jqbar.vertical .bar-level-wrapper {
position: relative;
display: inline-block;
overflow: hidden;
}
.jqbar.vertical .bar-level {
position: absolute;
}
/*horizontal*/
.jqbar.horizontal span {
display: inline-block;
margin-left: 5px;
font-size: 11px;
font-weight: bold;
}
.jqbar.horizontal .bar-percent {
font-size: 11px;
font-weight: bold;
height: 20px;
margin-bottom: 5px;
}
.jqbar.horizontal .bar-comment {
font-size: 11px;
font-weight: bold;
height: 20px;
margin-bottom: 5px;
}
.bar-label { min-width: 70px; text-align: right; }
JavaScript
(function ($) {
$.fn.extend({
jqbar: function (options) {
var settings = $.extend({
animationSpeed: 2000,
barLength: 300,
barWidth: 20,
barColor: 'red',
label: ' ',
value: 100,
comment: 'bohb'
}, options);
return this.each(function () {
var valueLabelHeight = 0;
var progressContainer = $(this);
progressContainer.addClass('jqbar horizontal').append('<span class="bar-label"></span><span class="bar-level-wrapper"><span class="bar-level"></span></span><span class="bar-percent"></span><span class="bar-comment"></span>');
var progressLabel = progressContainer.find('.bar-label').html(settings.label);
var progressBar = progressContainer.find('.bar-level').attr('data-value', settings.value);
var progressBar = progressContainer.find('.bar-level').attr('data-comment', settings.comment);
var progressBarWrapper = progressContainer.find('.bar-level-wrapper');
progressBar.css({
height: settings.barWidth,
width: 0,
backgroundColor: settings.barColor
});
var valueLabel = progressContainer.find('.bar-percent');
valueLabel.html('0');
// Append the Comment to the end of each bar
var valueLabel = progressContainer.find('.bar-comment');
valueLabel.html(settings.comment);
animateProgressBar(progressBar);
function animateProgressBar(progressBar) {
var level = parseInt(progressBar.attr('data-value'));
if (level > 100) {
level = 100;
alert('max value cannot exceed 100 percent');
}
...