如何使用渐变来设置svg进度条的样式 [英] How to style svg progress bar with gradients
问题描述
我正在使用 progressbar.js
插件,这有助于我使用 svg
创建好的进度条。这是小提琴:
I'm using progressbar.js
plugin, which helps me to create nice progress bars using svg
. Here is the fiddle:
https:/ /jsfiddle.net/vaxobasilidze/xqge4cew/1/
在#container1
我正在使用用于设置svg样式的十六进制颜色,但在 #container
中我需要使用渐变样式。如你所见,它不起作用。有没有办法使用渐变来设置svg样式?
In #container1
I'm using hex colors to style the svg, but in #container
I need it to be styled with gradient. As you see, it does not work. Is there a way to style svg using gradients?
// progressbar.js@1.0.0 version is used
// Docs: http://progressbarjs.readthedocs.org/en/1.0.0/
var bar = new ProgressBar.SemiCircle(container, {
strokeWidth: 6,
easing: 'easeInOut',
duration: 1400,
color: 'linear-gradient(to bottom, #1e5799 0%,#2989d8 50%,#7db9e8 100%)',
trailColor: '#eee',
trailWidth: 1,
svgStyle: null
});
bar.animate(1.0); // Number from 0.0 to 1.0
var bar1 = new ProgressBar.SemiCircle(container1, {
strokeWidth: 6,
easing: 'easeInOut',
duration: 1400,
color: '#eee',
trailColor: '#eee',
trailWidth: 1,
svgStyle: null
});
bar1.animate(1.0);
#container {
margin: 20px;
width: 200px;
height: 100px;
}
#container1 {
margin: 20px;
width: 200px;
height: 100px;
}
<script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/1.0.0/dist/progressbar.js"></script>
<div id="container"></div>
<div id="container1"></div>
推荐答案
您不能将渐变用作颜色,因为它稍后会放在笔划中。要在SVG中使用渐变,首先需要定义它然后将其应用为颜色。所以你可以尝试这样的事情:
You cannot use gradient as a color as it will be later placed inside the stroke. To use gradient with SVG you need first to define it then apply it as color. So you can try something like this:
// progressbar.js@1.0.0 version is used
// Docs: http://progressbarjs.readthedocs.org/en/1.0.0/
var Gradient = '<defs><linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="0%" gradientUnits="userSpaceOnUse"><stop offset="0%" stop-color="#1e5799"/><stop offset="50%" stop-color="#2989d8"/><stop offset="100%" stop-color="#7db9e8"/></linearGradient></defs>';
var bar = new ProgressBar.SemiCircle(container, {
strokeWidth: 6,
easing: 'easeInOut',
duration: 1400,
color: 'url(#gradient)',
trailColor: '#eee',
trailWidth: 1,
svgStyle: null
});
bar.svg.insertAdjacentHTML('afterbegin', Gradient);
bar.animate(1.0); // Number from 0.0 to 1.0
var bar1 = new ProgressBar.SemiCircle(container1, {
strokeWidth: 6,
easing: 'easeInOut',
duration: 1400,
color: '#eee',
trailColor: '#eee',
trailWidth: 1,
svgStyle: null
});
bar1.animate(1.0);
#container {
margin: 20px;
width: 200px;
height: 100px;
}
#container1 {
margin: 20px;
width: 200px;
height: 100px;
}
<script src="https://rawgit.com/kimmobrunfeldt/progressbar.js/1.0.0/dist/progressbar.js"></script>
<div id="container"></div>
<div id="container1"></div>
这篇关于如何使用渐变来设置svg进度条的样式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!