Issue
I need to make a circular progress bar (image below),
loading start from left bottom side up to right bottom side. Light-blue (#E8F6FD)
color is empty state and strong-blue (#1CADEB)
is progress.
I have tried some approaches, but cannot find the best one for this implementation:
- First of all I tried using a
div
element withborder-radius: 50%;
andborder-bottom-color: transparent;
, jsfiddle. In this approach I got a shape exactly like in image but the problem is how can I fill border with progress? - The second try was using canvas, and this approach is nice expect the reason that loader appears on the screen only after all
JS
loaded, I would like prevent this behavior and show loader immediately when page is loaded, jsfiddle
So my question is there any another approaches that can achive an arc loader or any suggestion for listed problems.
Solution
You can use an inline SVG with arc commands to make the arc shape. The animation can be handled with CSS by transitioning the stroke-dasharray property.
Here is an example, hover the arc to launch the loading animation :
svg {
display: block;
width: 40%;
margin: 0 auto;
}
.loader {
stroke-dasharray: .5 18 19;
transition: stroke-dasharray 2s linear;
}
svg:hover .loader {
stroke-dasharray: 19 0 19;
}
<svg viewbox="0 0.5 10 8">
<path d="M2 8 A 4 4 0 1 1 8 8" fill="none" stroke-width="0.78" stroke="#E8F6FD" />
<path class="loader" d="M2 8 A 4 4 0 1 1 8 8" fill="none" stroke-width="0.8" stroke="#00ACEE" />
</svg>
Note that you will need to add vendor prefixes to the transition property for browser support (more info on canIuse).
Answered By - web-tiki
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.