Before even embarking on this project, I'd like to know if it's at all possible to reverse the progress bar found in the bootstrap framework, so it can display a value going from right to left? The reason behind this question is that I have a range of numbers that can go from positive to negative. The idea is to place two progress bars next to each other and have the right one display the percentage range when the value is positive, and the left bar to display the percentage range when value is negative. For now, the values are static, but these will be 'live' in the future.
Any input on this, and if possible, a pointer to similar projects? I haven't really found anything relevant done with this framework.
I've looked at posts like this one: Reverse progressbar using CSS3, but I'm not sure if this is the way to go when using Bootstrap. Is there some sort of override available for this kind of functionality, in regards to css?
Right now, my progress bar is setup like so:
<li>Speed<span class="pull-right"><em>@Math.Round(DepthValue, 2) m/min</em></span>
<div class="progress progress-success">
<div class="bar" style="width: @Model.SpeedRangePercentage%"></div>
</div>
</li>
I actually figured it out! :) Turned out to be really easy, and indeed the answer was found in the previously linked post;
<li>Speed<span class="pull-right"><em>@Math.Round(DepthValue, 2) m/min</em></span>
<div class="progress progress-success">
<div class="bar" style="width: @Model.SpeedRangePercentage%; display: block; float: right;"></div>
</div>
</li>
Adding styles "display: block;" and "float; right" caused the bar to move from right to left.
If I could propose a different option, it's even easier than this. Think about it this way:
<div class="progress">
<div class="progress-bar progress-bar-info" role="progressbar" style="width:40%;"></div>
</div>
The .progress
element is a block-level element, so just float or position the .progress-bar
however you like inside it. Here is a quick fiddle of this idea for reference.
You can adjust an actual progress bar element via CSS in a couple different ways.
progress {
transform: rotate(180deg);
}
or better yet
progress {
direction: rtl;
}
Try switching background and foreground colors and gradually reducing progress bar value. It might work but it will be VERY confusing.
Simple just interchange the background colors of progress and progress bar
. That way if the progress bar width changes it will look like it is progressing in reverse way. Including the .css style
.progress{
background-color: #007bff;
}
.progress-bar{
background-color: #e9ecef;
}
Use transform: rotate(180deg);
on the progress class.
Further to the accepted answer, in Bootstrap 4+, the progress bar now uses Flex, and floating won't work.
So now, do the following (add "justify-content-end" ):
<div class="progress justify-content-end">
<div class="progress-bar progress-bar-striped" role="progressbar" style="width: 10%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100"></div>
</div>
In Bootstrap 4 just change the div with class .progress
to flex-direction: row-reverse
or use the flex-row-reverse
helper class (as denoted below):
<div class="progress flex-row-reverse">
<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100"></div>
</div>