다음은 내 프로젝트에서 원형 진행률 표시줄 효과를 구현한 방법에 대한 요약입니다. 모든 사람에게 도움이 되기를 바랍니다.
이 방법은 캔버스를 사용하여 원을 그려 동적 링 진행률 표시줄을 만듭니다. 코드를 직접 입력하세요. 궁금한 사항이 있으면 댓글을 참조하세요.
HTML 코드는 다음과 같습니다. 페이지에 캔버스를 만들면 됩니다.
<canvas id="canvas" width="300" height="300"> <p>抱歉,您的浏览器不支持canvas</p> </canvas>
JS는 두 부분으로 나누어집니다.
첫 번째 부분은 구현합니다.
첫 번째 부분:
첫 번째 부분의 기능 원리는 대략 두 개의 원을 그리는 것입니다. 하나는 배경 원이고 두 번째는 동적으로 로드되는 호를 통해 진행됩니다. timer; 그라디언트 색상이 추가되었습니다.
function toCanvas(id ,progress){ canvas进度条 var canvas = document.getElementById(id), ctx = canvas.getContext("2d"), percent = progress, 最终百分比 circleX = canvas.width / 2, 中心x坐标 circleY = canvas.height / 2, 中心y坐标 radius = 100, 圆环半径 lineWidth = 5, 圆形线条的宽度 fontSize = 20; 字体大小 两端圆点 function smallcircle1(cx, cy, r) { ctx.beginPath(); //ctx.moveTo(cx + r, cy); ctx.lineWidth = 1; ctx.fillStyle = '#06a8f3'; ctx.arc(cx, cy, r,0,Math.PI*2); ctx.fill(); } function smallcircle2(cx, cy, r) { ctx.beginPath(); //ctx.moveTo(cx + r, cy); ctx.lineWidth = 1; ctx.fillStyle = '#00f8bb'; ctx.arc(cx, cy, r,0,Math.PI*2); ctx.fill(); } 画圆 function circle(cx, cy, r) { ctx.beginPath(); //ctx.moveTo(cx + r, cy); ctx.lineWidth = lineWidth; ctx.strokeStyle = '#eee'; ctx.arc(cx, cy, r, Math.PI*2/3, Math.PI * 1/3); ctx.stroke(); } 画弧线 function sector(cx, cy, r, startAngle, endAngle, anti) { ctx.beginPath(); //ctx.moveTo(cx, cy + r); // 从圆形底部开始画 ctx.lineWidth = lineWidth; // 渐变色 - 可自定义 var linGrad = ctx.createLinearGradient( circleX-radius-lineWidth, circleY, circleX+radius+lineWidth, circleY ); linGrad.addColorStop(0.0, '#06a8f3'); //linGrad.addColorStop(0.5, '#9bc4eb'); linGrad.addColorStop(1.0, '#00f8bb'); ctx.strokeStyle = linGrad; 圆弧两端的样式 ctx.lineCap = 'round'; 圆弧 ctx.arc( cx, cy, r, (Math.PI*2/3), (Math.PI*2/3) + endAngle/100 * (Math.PI*5/3), false ); ctx.stroke(); } 刷新 function loading() { if (process >= percent) { clearInterval(circleLoading); } 清除canvas内容 ctx.clearRect(0, 0, circleX * 2, circleY * 2); 中间的字 ctx.font = fontSize + 'px April'; ctx.textAlign = 'center'; ctx.textBaseline = 'middle'; ctx.fillStyle = '#999'; ctx.fillText(parseFloat(process).toFixed(0) + '%', circleX, circleY); 圆形 circle(circleX, circleY, radius); 圆弧 sector(circleX, circleY, radius, Math.PI*2/3, process); 两端圆点 smallcircle1(150+Math.cos(2*Math.PI/360*120)*100, 150+Math.sin(2*Math.PI/360*120)*100, 5); smallcircle2(150+Math.cos(2*Math.PI/360*(120+process*3))*100, 150+Math.sin(2*Math.PI/360*(120+process*3))*100, 5); 控制结束时动画的速度 if (process / percent > 0.90) { process += 0.30; } else if (process / percent > 0.80) { process += 0.55; } else if (process / percent > 0.70) { process += 0.75; } else { process += 1.0; } } var process = 0.0; 进度 var circleLoading = window.setInterval(function () { loading(); }, 20); } 第二部分,调用封装好的代码: toCanvas('canvas',50);
【관련 권장 사항】
1. Canvas는 원형 진행률 표시줄을 구현하고 숫자 백분율을 표시합니다. CSS 클립을 사용하여 오디오 재생을 구현합니다. 링 진행률 표시줄 튜토리얼 예시
3. h5 캔버스 원형 진행률 표시줄의 예시 코드 공유
4 H5 캔버스는 순환 동적 로딩 진행률 예시
위 내용은 캔버스에 아크 및 링 진행 표시줄을 구현하는 예제 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!