Javascript 使用SVG和Angular JS的三角形进度条

Javascript 使用SVG和Angular JS的三角形进度条,javascript,angularjs,svg,Javascript,Angularjs,Svg,我需要使用SVG和Angular JS来定制三角形进度条。但似乎很难控制绿色条。有人能帮我吗 这是我的密码。您可以在文本框中调整该值 var-app=angular.module('ProgressBar',[]); 应用程序控制器('ProgressBarCtrl',函数($scope){ $scope.A=365; $scope.B=275; $scope.C=33; $scope.D=276; $scope.E=366; $scope.F=157; }); .bar内容{fill:#D1

我需要使用SVG和Angular JS来定制三角形进度条。但似乎很难控制绿色条。有人能帮我吗

这是我的密码。您可以在
文本框中调整该值

var-app=angular.module('ProgressBar',[]);
应用程序控制器('ProgressBarCtrl',函数($scope){
$scope.A=365;
$scope.B=275;
$scope.C=33;
$scope.D=276;
$scope.E=366;
$scope.F=157;
});
.bar内容{fill:#D1D3D4;}
.bar帧{fill:#69BD45;}

以前从未接触过Angular,因此我无法帮助您。但是,我可以提出一种适合SVG或画布使用的方法。(我认为画布实现更快,因为它是GPU加速的)

由于您的初始图像的纵横比为2.85:1,因此我选择使用100px的高度和285px的宽度-我对每个图像使用了相同的尺寸

functionbyid(id){returndocument.getElementById(id)}
函数allByClass(clss){返回文档.getElementsByCassName(clss)}
函数allByTag(tag,parent){return(parent=undefined?document:parent).getElementsByTagName(tag)}
window.addEventListener('load',onDocLoaded,false);
函数onDocLoaded(evt)
{
byId('slider')。style.width=byId('volume')。width+'px';
设定体积(50);
byId('slider')。addEventListener('input',onSliderChanged,false);
byId('slider')。addEventListener('input',onSlider2Changed,false);
}
滑动变化函数(evt)
{
var值=此值;
设定体积(值);
}
滑块2上的功能已更改(evt)
{
var值=此值;
设置体积vg(值);
}
函数设置体积VG(百分比)
{
var svg=byId('mSvg');
var barWidth=(百分比/100)*svg.width.baseVal.value;
var barHeight=(百分比/100)*svg.height.baseVal.value;
var msg=“0,”+svg.height.baseVal.value+“”
+barWidth+”,“+(svg.height.baseVal.value barHeight)+”
+barWidth+“,”+svg.height.baseVal.value;
allByClass('barSlider')[0].setAttribute('points',msg);
}
//
//
//								(2)
//
//
//
//
//  (1)							(3)
函数设置音量(百分比)
{
var can=byId(“卷”);
var ctx=can.getContext('2d');
ctx.fillStyle=“rgba(0,0,0,0)”;
ctx.fillRect(0,0,罐宽,罐高);
ctx.fillStyle=“#d1d3d4”;
ctx.moveTo(0,罐高);
ctx.beginPath();
ctx.lineTo(罐宽,0);
ctx.lineTo(罐宽、罐高);
ctx.lineTo(0,罐高);
ctx.fill();
ctx.beginPath();
ctx.fillStyle=“#69bd45”;
ctx.moveTo(0,罐高);
ctx.lineTo((百分比/100)*罐宽,罐高-((百分比/100)*罐高));
ctx.lineTo((百分比/100)*罐宽、罐高);
ctx.lineTo(0,罐高);
ctx.fill()
}


.barFrame{fill:#d1d3d4;} .barSlider{fill:#69bd45;}
以前从未接触过Angular,因此我无法帮助您。但是,我可以提出一种适合SVG或画布使用的方法。(我认为画布实现更快,因为它是GPU加速的)

由于您的初始图像的纵横比为2.85:1,因此我选择使用100px的高度和285px的宽度-我对每个图像使用了相同的尺寸

functionbyid(id){returndocument.getElementById(id)}
函数allByClass(clss){返回文档.getElementsByCassName(clss)}
函数allByTag(tag,parent){return(parent=undefined?document:parent).getElementsByTagName(tag)}
window.addEventListener('load',onDocLoaded,false);
函数onDocLoaded(evt)
{
byId('slider')。style.width=byId('volume')。width+'px';
设定体积(50);
byId('slider')。addEventListener('input',onSliderChanged,false);
byId('slider')。addEventListener('input',onSlider2Changed,false);
}
滑动变化函数(evt)
{
var值=此值;
设定体积(值);
}
滑块2上的功能已更改(evt)
{
var值=此值;
设置体积vg(值);
}
函数设置体积VG(百分比)
{
var svg=byId('mSvg');
var barWidth=(百分比/100)*svg.width.baseVal.value;
var barHeight=(百分比/100)*svg.height.baseVal.value;
var msg=“0,”+svg.height.baseVal.value+“”
+barWidth+”,“+(svg.height.baseVal.value barHeight)+”
+barWidth+“,”+svg.height.baseVal.value;
allByClass('barSlider')[0].setAttribute('points',msg);
}
//
//
//								(2)
//
//
//
//
//  (1)							(3)
函数设置音量(百分比)
{
var can=byId(“卷”);
var ctx=can.getContext('2d');
ctx.fillStyle=“rgba(0,0,0,0)”;
ctx.fillRect(0,0,罐宽,罐高);
ctx.fillStyle=“#d1d3d4”;
ctx.moveTo(0,罐高);
ctx.beginPath();
ctx.lineTo(罐宽,0);
ctx.lineTo(罐宽、罐高);
ctx.lineTo(0,罐高);
ctx.fill();
ctx.beginPath();
ctx.fillStyle=“#69bd45”;
ctx.moveTo(0,罐高);
ctx.lineTo((百分比/100)*罐宽,罐高-((百分比/100)*罐高));
ctx.lineTo((百分比/100)*罐宽、罐高);
ctx.lineTo(0,罐高);
ctx.fill()
}


.barFrame{fill:#d1d3d4;} .barSlider{fill:#69bd45;}
您能解释一下问题是什么吗?你说的“控制”酒吧是什么意思?我指的是如何让绿色酒吧进步。你能解释一下问题是什么吗?你所说的“控制”酒吧是什么意思?我的意思是如何让绿色酒吧进步。