当前位置: 首页 > Web前端 > HTML

线性渐变圆形进度条的实现研究

时间:2023-03-28 00:55:00 HTML

鏈枃涓昏浠嬬粛鍩轰簬NutUIVue3鐨刢ircleProgress缁勪欢鐨勮璁′笌瀹炵幇鍘熺悊銆備竴涓渾褰㈢殑杩涘害鏉$粍浠讹紝鐢ㄤ簬鏄剧ず褰撳墠鎿嶄綔鐨勮繘搴︼紝鏀寔淇敼杩涘害鍜屾笎鍙樿壊銆傚渾褰㈣繘搴︽潯鏄竴涓潪甯稿父鐢ㄧ殑缁勪欢锛屽挨鍏舵槸鍦ㄧ鐞嗗悗鍙版暟鎹粺璁℃垨鑰呬竴浜涢渶瑕佺敤鎴风瓑寰呯殑浠诲姟鐨勯〉闈笂銆傚疄鐜版晥鏋滃涓嬪浘鎵€绀恒€傚疄鐜版€濊矾濡備笅銆傞鍏堬紝璁╂垜浠⒊鐞嗕竴涓嬫垜浠殑闇€姹傘€傛垜浠渶瑕佷竴涓渾褰㈢殑杩涘害鏉★紝鍙互鏀瑰彉杩涘害锛屾湁鍔ㄧ敾锛屽彲浠ユ敮鎸佹笎鍙樿壊銆傜洰鍓嶅父瑙佺殑瀹炵幇鏂规鏈変笁绉嶏細CSS瀹炵幇SVG瀹炵幇Canvas瀹炵幇SVG鍒嗕负涓ょ锛屼竴绉嶆槸鐩存帴鐢ㄥ渾鍦堝疄鐜帮紝涓€绉嶆槸鐢ㄨ矾寰勭粯鍒躲€傜劧鍚庡啀鐪嬬湅鍥藉唴姣旇緝鐭ュ悕鐨勪竴浜涚粍浠跺簱鐨勫疄鐜帮細AntdDesignTdesignvarletElementUIvantSVGCircleCircleCirclePathPathAntdDesign鍜孴Design锛寁arlet浣跨敤svgCircle瀹炵幇锛屼絾鏄釜浜鸿寰桝ntdDesign鐨勬笎鍙樿壊棣栨湯灏炬湁闂锛孴Design鑰寁arlet鏆傛椂涓嶆敮鎸佸渾褰㈣繘搴︽潯鍜岀嚎鎬ф笎鍙樸€侲lementUI鍜孷ant浣跨敤svgPath鏉ュ疄鐜般€俈ant鏀寔绾挎€ф笎鍙橈紝涓嶅瓨鍦ㄦ笎鍙橀鑹查灏句笉瀵瑰簲鐨勯棶棰樸€侲lement鏆傛椂涓嶆敮鎸佺嚎鎬ф笎鍙樸€傜洰鍓嶄富娴佺殑缁勪欢搴撴槸寰幆鐨勩€傝繘搴︽潯鍩烘湰閮芥槸鐢╯vg鐢荤殑锛屽洜涓哄疄鐜版€濊矾绠€鍗曪紝鐢╯vg鐢讳袱涓渾锛屼竴涓渾浣滀负鑳屾櫙鑹诧紝涓€涓渾浣滀负杩涘害鏄剧ず锛屼娇鐢ㄧ殑鏃跺€欓棶棰樺緢灏戙€侼utUI涔熼€夋嫨浜嗕娇鐢⊿VG鏉ュ疄鐜拌繘搴︽潯銆備笅闈㈣缁嗕粙缁嶄袱绉嶅疄鐜版柟娉曘€侰ircle鐨勫疄鐜伴鍏堣涓€涓婼VG鐨刢ircle锛圓ntd鐨勫疄鐜帮紝Tdesign锛夛紝涓嬮潰涔熶細浠嬬粛Antd鐨勮繘搴︽潯鐨勭嚎鎬ф笎鍙橀棶棰樸€傜涓€姝ョ敾鏈€绠€鍗曠殑鍦?svgheight="100"width="100"x-mlns="http://www.w3.org/200/svg">浠ヤ笂灞炴€ф垜灏变笉澶氫粙缁嶇粰涓嶆噦鐨勫悓瀛︿簡鍏跺疄锛屼篃鍙互鐪嬪ぇ鎰忥紝r鏄崐寰勶紝cx锛宑y鏄渾鐐圭殑浣嶇疆锛岃繕鏈夊渾寮х殑棰滆壊鍜屽搴︺€傝繖閲屽彲鑳芥湁鍚屽浼氶棶杩欎釜鐢ㄥ渾鑳戒笉鑳藉疄鐜帮紝浣嗘槸鍒繕浜嗘垜浠渶瑕佺殑鏁堟灉锛岄偅鎴戜滑鐢讳竴涓笉鏄?00%杩涘害鐨勫渾锛屾€庝箞鐢诲憿锛熻繖閲屼娇鐢ㄤ簡stroke-dasharray灞炴€с€傚浘褰㈢殑绗旂敾鍙互鍋氭垚铏氱嚎銆傝繖閲岄渶瑕佺悊瑙g殑鏄紝dotteddot鐨勫ぇ灏忔槸鍙互璁剧疆鐨勶紝骞朵笉鏄湡鐨勫彧鏈変竴涓€傚畠鍙互寤堕暱鎴栫缉鐭€傛墍浠ュ鏋滃渾鐨勭偣鐨勯暱搴︽伆濂界瓑浜庡渾鐨勮竟闀匡紝閭d箞杩欎釜鐐圭湅璧锋潵灏辨槸鍦嗙殑杈广€傛垜浠彲浠ヨ绠楃幆鐨勫懆闀匡紝鍙傛暟鏄姬闀匡紝鏈€澶у€硷紝鏈€澶у€煎氨鏄懆闀匡紝寮ч暱灏辨槸杩涘害鍊笺€備綘搴旇涔熷彂鐜颁簡闂銆傝繖鏍风殑璇濓紝褰撹繘搴︿笉鏄?00%鐨勬椂鍊欙紝鏈変簺鍦嗗姬浼氭病鏈夐鑹诧紝鎵€浠ユ垜浠渶瑕佷竴涓儗鏅壊銆傞偅鏄彟涓€涓湀瀛愩€?svg>鍥犱负杩欓噷鎴戜滑闇€瑕佸畠浠庝腑闂寸殑宸﹁竟寮€濮嬶紝鎵€浠ユ垜浠渶瑕佹坊鍔犳棆杞€傝嚦浜庝笅涓€姝ワ紝璁╁畠鍔ㄨ捣鏉ュ緢绠€鍗曪紝閭f€庝箞鍔ㄥ憿锛熷姩鎬佹敼鍙榮troke-dasharray鐨勫€煎氨鍙互浜嗭紝涓嬮潰浠嬬粛璺緞鐨勬椂鍊欏啀璇存€庝箞鏀瑰彉銆傚厛璇翠竴涓嬫垜浠亣鍒扮殑灏忓潙锛屽氨鏄垜浠湪鍋氭笎鍙樿壊鐨勬椂鍊欙紝浼氬彂鐜版垜浠殑娓愬彉鑹蹭笉鏄粠鎴戜滑鐨刾rogress寮€濮嬬殑銆傝繖閲屾垜浠篃鍙互鐪嬬湅Antd鐨勫渾褰㈣繘搴︽潯鐨勬笎鍙樸€傛垜浼氱粰浣犵湅涓€涓孩鑹插埌榛戣壊鐨勩€傦紙Tdesign杩欓噷灏忕紪鍦ㄥ湪绾跨紪杈戝櫒涓瘯杩囷紝绾挎€ф笎鍙樻病鏈夌敓鏁堛€傦級杩欓噷锛屾垜涓汉璁や负antd鐨勬笎鍙樹篃鏄敊璇殑锛堜粎浠h〃涓汉瑙傜偣锛夈€傚綋鐒讹紝浣犱篃鍙互鎻愬嚭鍏朵粬鐨勬兂娉曘€傝璁恒€傚叾瀹炴槸鍥犱负绾挎€ф笎鍙樻槸浠庡乏鍒板彸锛岀幆鍦ㄤ笂闈㈡棆杞€傚ぇ瀹跺彲浠ヨ嚜宸辨悳绱㈠紩鎿庢悳绱㈣В鍐虫柟妗堬紝杩欓噷灏变笉缁嗚浜嗐€備笅闈㈢殑璺緞瀹炵幇涓昏浠嬬粛璺緞鐨勫疄鐜帮紙Vant銆丒lement瀹炵幇鏂规硶锛夈€傚彲浠ョ畝鍗曞畬缇庣殑瑙e喅涓婇潰娓愬彉棰滆壊涓嶅尮閰嶇殑闂锛圗lement鏆傛椂涓嶆敮鎸佺嚎鎬ф笎鍙橈級銆傚疄鐜版€濊矾鍜宑ircle鏄竴鏍风殑銆傜敾涓や釜鍦嗗湀锛屼竴涓敤鏉ヨ〃绀哄簳鑹诧紝涓€涓敤鏉ヨ〃绀哄姬搴︺€傛渶涓昏鐨勬槸鎴戜滑鎬庝箞鐢讳竴涓渾锛熶簡瑙iewBox灞炴€у苟灏嗘灞炴€ф坊鍔犲埌SVG鏍囪涓€傝繖涓睘鎬ф槸鐢ㄦ潵璁剧疆鐢诲竷鐨勫ぇ灏忕殑锛屼絾鏄娉ㄦ剰锛屽畠鏄竴涓浉瀵瑰ぇ灏忥紝浼氭牴鎹垜浠埗鍏冪礌鐨勫彉鍖栧姩鎬侀€傞厤銆傛瘮濡傛垜浠缃畠鐨勫睘鎬т负viewBox="0,0,100,100"锛屽叾瀹炲氨鏄妸鎴戜滑鏁翠釜鐢诲竷鐨勫鍜岄珮鍒嗘垚100浠斤紝SVG鍏冪礌鏄剧ず鍦ㄥ垝鍒嗗ソ鐨勭敾甯冧笂銆傛垜浠笉鍐嶉渶瑕佸叧娉⊿VG鐨勫搴﹀拰楂樺害銆傜幇鍦ㄦ槸鑷€傚簲鐨勶紝浼氳嚜鍔ㄩ€傚簲澶栧眰鐖跺厓绱犵殑瀹介珮銆傛垜浠湪鏈€澶栧眰缁欑敤鎴蜂竴涓狿rops鏉ヨ缃渾褰㈣繘搴︽潯鐨勫ぇ灏忋€?div:style="{height:radius*2+'px',width:radius*2+'px'}">

鐞嗚В璺緞鐨刣灞炴€э紝鏃㈢劧瑕佺敤path鐢诲渾锛岄偅褰撶劧瑕佺啛鎮夝煇傪煃虹殑d灞炴€э紝鍙互鐢诲悇绉嶇嚎銆俤灞炴€х敤浜庡畾涔夎矾寰勬暟鎹€傚厛浜嗚В涓€涓嬫垜浠渶瑕佺敤鍒扮殑鍙傛暟锛歁=moveto(MX,Y):灏嗙敾绗旂Щ鍔ㄥ埌鎸囧畾鍧愭爣浣嶇疆A=ellipticalArc(ARX,RY,XROTATION,FLAG1,FLAG2,X,Y):Pleasepay娉ㄦ剰妞渾寮р殸锔忥紝杩欎簺鍙傛暟鏄尯鍒嗗ぇ灏忓啓鐨勶紝褰撳畠鏄ぇ鍐欏懡浠ゆ椂锛岃〃绀哄畠鐨勫弬鏁版槸涓€涓粷瀵逛綅缃紝灏忓啓鍛戒护琛ㄧず瀹冪殑姝т箟鏄浉瀵逛簬褰撳墠浣嶇疆鐨勭偣銆傛垜浠篃鍙互浣跨敤璐熷€间綔涓烘垜浠懡浠ょ殑鍙傛暟銆傝礋鐨勭浉瀵箈鍊间細鍚戝乏绉诲姩锛岃礋鐨勭浉瀵箉鍊间細鍚戜笂绉诲姩銆傝缁嗚В閲婁竴涓嬫垜浠袱涓弬鏁扮殑moveto灞炴€у叾瀹炲緢濂界悊瑙o紝鐢荤瑪鐨勬寚瀹氫綅缃紝x杞村拰y杞达紝M(缁濆)m(鐩稿)妞渾寮фき鍦嗗姬鐨勮褰曚负濡備笅锛氬懡浠わ細A锛堢粷瀵癸級a锛堢浉瀵癸級妞渾寮у弬鏁板舰寮忥細(rxryx-axis-rotationlarge-arc-flagsweep-flagxy)璇︾粏鍙傛暟锛歳xry涓轰袱涓崐杞寸殑闀垮害妞渾銆倄-axis-rotation鏄き鍦嗙浉瀵逛簬鍧愭爣绯荤殑鏃嬭浆瑙掑害锛屽崟浣嶆槸搴﹁€屼笉鏄姬搴︺€俵arge-arc-flag鏄粯鍒跺ぇ寮э紙1锛夋垨灏忓姬锛?锛夐儴鍒嗙殑鏍囧織銆俿weep-flag鏄爣璁版槸椤烘椂閽?1)杩樻槸閫嗘椂閽?0)缁樺埗鐨勩€倄y鏄渾寮х粓鐐圭殑鍧愭爣銆傚洜涓烘垜浠渶瑕佹妸鍦嗙殑缁樺埗鏂瑰悜浜ょ粰鐢ㄦ埛鏉ユ帶鍒讹紝鎵€浠ヨ繖閲屾垜浠帴鍙椾竴涓猵rops鏉ユ帶鍒剁粯鍒舵柟鍚戙€傛牴鎹笂闈㈢殑鎻忚堪锛屾垜浠彲浠ュ啓鍑鸿矾寰勭殑d灞炴€с€傚湪缁濆浣嶇疆50銆?0锛堝渾蹇冿級澶勶紝鍏堜粠鍦嗗績涓婃柟45鐨勪綅缃紑濮嬬粯鍒讹紙45涓哄崐寰勶級鐒跺悗鏄き鍦嗗姬鐨勫弬鏁皉x銆乺y銆佸崐寰勪负45锛屾棆杞搴︿负0锛岀粯鍒朵竴涓ぇ鍦嗗姬锛岀劧鍚庣粯鍒舵柟鍚戯紝椤烘椂閽堟垨閫嗘椂閽堟棆杞紝鏈€鍚庢槸鍦嗗姬缁堢偣鍧愭爣銆傚彲浠ュ緱鍑轰互涓嬩唬鐮乧onstpath=computed(()=>{constisWise=props.clockwise?1:0;return`M5050m0-45a454501${isWise}090a454501,${isWise}0-90`;});杩欐牱灏变細鐢诲嚭涓€涓渾锛屽叾浠栦娇鐢ㄧ殑灞炴€у拰涓婇潰鐨刢irlce涓€鏍疯矾寰勭殑璺緞锛屼笅涓€姝ュ氨鏄粰鍦嗙幆姝e父涓婅壊锛屽姞涓婂姩鎬佺殑杩涘害鍙樺寲銆傞鍏堬紝璁╂垜浠湪搴曢儴鍐欎笂鑳屾櫙鐜€傜敤鎴峰彲浠ヨ嚜瀹氫箟鑳屾櫙鐜渾寮х殑棰滆壊鍊煎拰鍦嗗姬鐨勫搴︺€?pathclass="nut-circleprogress-path":style="pathStyle":d="path"fill="none":stroke-width="strokeWidth">/>constpathStyle=computed(()=>{杩斿洖{涓:props.pathColor};});鎺ヤ笅鏉ユ槸鏄剧ず杩涘害鏉$殑鍦嗙幆锛屽洜涓烘垜浠繖閲岃繕闇€瑕佷竴涓笎鍙樿壊锛屾墍浠ユ垜浠渶瑕佸湪SVG涓坊鍔犱竴浜涗唬鐮併€傛鏌VG鏂囨。銆傛垜浠壘鍒颁簡涓€涓彨鍋?linearGradient>SVG鍏冪礌鐨勫伐鍏凤紝鍒╃敤杩欎釜鍏冪礌鎴戜滑鍙互杈惧埌棰滆壊娓愬彉鐨勭洰鐨勩€傚垱寤簂inearGradient鍦ㄥ垱寤鸿繖涓厓绱犱箣鍓嶏紝鎴戜滑闇€瑕佺煡閬?linearGradient>鏍囩蹇呴』宓屽鍦?defs>閲岄潰銆?defs>鏍囩鏄痙efinitions鐨勯瀛楁瘝缂╁啓锛屽畾涔変簡娓愬彉绛夌壒娈婂厓绱犮€傚苟涓旀垜浠繀椤讳负娓愬彉鍐呭鍒嗛厤涓€涓猧d灞炴€э紝鍚﹀垯鏂囨。涓殑鍏朵粬鍏冪礌鏃犳硶寮曠敤瀹冦€備负浜嗕娇娓愬彉鍙噸鐢紝闇€瑕佸湪鏍囩鍐呭畾涔夋笎鍙樺唴瀹癸紝鑰屼笉鏄湪褰㈢姸涓娿€傝缃鑹叉笎鍙樻柟鍚戠幇鍦?linearGradient>鍏冪礌宸茬粡鍒涘缓鎴愬姛锛屾垜浠彲浠ョ粰瀹冭祴灞炴€ф潵婊¤冻鎸夐渶淇敼娓愬彉棰滆壊鏂瑰悜鐨勯渶瑕併€傛笎鍙樼殑鏂瑰悜鍙互閫氳繃涓や釜鐐规潵鎺у埗锛屽垎鍒槸灞炴€1銆亁2銆亂1鍜寉2锛屽畠浠畾涔変簡娓愬彉璺嚎鐨勬柟鍚戙€傞粯璁ゆ儏鍐典笅锛屾笎鍙樻槸姘村钩鏂瑰悜鐨勶紝浣嗛€氳繃淇敼杩欎簺灞炴€э紝鍙互鏃嬭浆鏂瑰悜銆傝缃笎鍙樿壊銆?linearGradient>涓坊鍔犵殑棰滆壊鐞嗚涓婃槸娌℃湁涓婇檺鐨勶紝浣嗘槸濡傛灉瑕佹湁娓愬彉鐨勬晥鏋滐紝鑷冲皯瑕佹坊鍔犱袱绉嶉鑹层€傛墍浠ヤ綘闇€瑕佸湪涓垱寤鸿嚦灏戜袱涓?stop>鍏冪礌鏉ユ坊鍔犱綘闇€瑕佺殑棰滆壊灞炴€с€倁ndefinedstop-opacity锛氳缃畇top-color棰滆壊鐨勯€忔槑搴︼紙鏆傛椂涓嶇敤锛?defs>conststopArray=computed(()=>{if(!isObject(props.color)){return;}letcolor=props.color;constcolorArr=Object.keys(color).sort((涓€涓?b)=>parseFloat(a)-parseFloat(b));letstopArr:object[]=[];colorArr.map((item,index)=>{letobj={key:'',value:''};obj.key=item;obj.value=color[item];stopArr.push(obj);});returnstopArr;});娣诲姞娓愬彉鑹插悗锛屾垜浠潵澶勭悊杩涘害鏉★紙濡備綍璁╄繘搴︽潯缁戝畾鍒拌繖涓笎鍙樿壊锛夛紝鍏跺疄寰堢畝鍗曪紝鎶婂渾鍦堢殑鎻忚竟鏀规垚鐨勫敮涓€id鍗冲彲锛涚劧鍚庡鐞嗗渾鐨勮繘搴︽樉绀猴紝鍜屼笂闈㈠渾鐨勫鐞嗘柟娉曚竴鑷达紝浣跨敤stroke-dasharray鍗冲彲銆?pathclass="nut-circleprogress-hover":style="hoverStyle":d="path"fill="none":stroke-linecap="strokeLinecap":stroke-width="strokeWidth">consthoverStyle=computed(()=>{letperimeter=283;letoffset=(perimeter*Number(props.progress))/100;return{stroke:isObject(props.color)?`url(#${refRandomId})`:props.color,strokeDasharray:`${offset}px${perimeter}px`};});涓婇潰鐨剆troke-linecap灞炴€ф槸涓€涓猺epresentation灞炴€э紝瀹冨畾涔変簡opensubpath鍦ㄦ弿杈规椂鎵€浣跨敤鐨勫舰鐘讹紝鍙互鍦╯tyle涓娇鐢ㄣ€傝嚦浜庝笂闈㈢殑283鏄€庝箞鏉ョ殑锛屽叾瀹炲緢绠€鍗曘€傚氨鏄垜浠渾鐜殑鍛ㄩ暱锛?蟺r=23.141592645銆傚叾瀹炲埌杩欓噷锛屾垜浠櫘閫歨5鐜涓嬬殑鍦嗗舰杩涘害鏉″氨瀹屾垚浜嗐€俆aro涓嬬殑SVG鍥犱负鏈塏utUI鍙互鍜孴aro涓€璧峰紑鍙戝井淇″皬绋嬪簭锛屾墍浠ヨ繖閲岀殑寰幆杩涘害鏉″湪灏忕▼搴忕幆澧冧笅褰撶劧瑕佹湁鍚屾牱鐨勫姛鑳姐€傚洜涓哄疄鐜颁簡鎴戜滑鏅€歨5鐜涓嬩娇鐢ㄧ殑SVG锛屾墍浠ユ兂濂楃敤涓€濂椾唬鐮侊紝浣嗘槸鍙戠幇鍦ㄥ皬绋嬪簭鐜涓嬩笉鏀寔浣跨敤SVG銆傝繖涓湪灏忕▼搴忕殑瀹樻柟鏂囨。涓湁鍥炵瓟锛屾墍浠ユ垜杩欓噷鐢ㄥ畠浣滀负鑳屾櫙鍥炬潵灞曠ず銆傞€氳繃涓€浜汼VG杞琤ase64鐨勭綉绔欙紝鎴戜滑鍙戠幇<鍏跺疄鏄?3C锛?鏄?3E锛?鍙互鎹㈡垚%23锛屽洜涓烘垜浠噷闈㈣繕鏈変竴浜涘彉閲忥紝鎵€浠ユ垜杩欓噷鎶婂畠浠媶寮€锛屽垎鎴愬嚑涓彉閲忔潵鍐欍€?div:style="style">
conststyle=computed(()=>{let{strokeWidth}=props;letstopArr:Array=stop();letstopDom:string[]=[];if(stopArr){stopArr.map((item:Item)=>{letobj='';obj=`%3Cstopoffset='${item.key}'stop-color='${transColor(item.value)}'/%3E`;stopDom.push(obj);});}璁﹑erimeter=283;璁﹑rogress=+currentRate.value;璁﹐ffset=(perimeter*Number(format(parseFloat(progress.toFixed(1)))))/100;constisWise=props.clockwise?1:0;constcolor=isObject(props.color)?`url(%23${refRandomId})`:transColor(props.color);璁ヾ=`M5050m0-45a454501${isWise}090a454501,${isWise}0-90`;constpa=`%3Cdefs%3E%3ClinearGradientid='${refRandomId}'x1='100%25'y1='0%25'x2='0%25'y2='0%25'%3E${stopDom}%3C/linearGradient%3E%3C/defs%3E`;constpath=`%3Cpathd='${d}'stroke-width='${strokeWidth}'stroke='${transColor(props.pathColor)}'fill='none'/%3E`;constpath1=`%3Cpathd='${d}'stroke-width='${strokeWidth}'stroke-dasharray='${offset},${perimeter}'stroke-linecap='round'stroke='${color}'fill='none'/%3E`;return{background:`url("data:image/svg+xml,%3CsvgviewBox='00100100'xmlns='http://www.w3.org/2000/svg'%3E${pa}${path}${path1}%3C/svg%3E")`锛屽搴︼細'100%'锛岄珮搴︼細'100%'}锛泒);浣犺涓鸿繖鏄綘瀹屾垚浜嗗悧锛熶笉涓嶄笉锛屼綘浼氬彂鐜板綋浣犲姩鎬佹敼鍙樺渾褰㈣繘搴︽潯鐨勮繘搴︽椂锛屾病鏈変换浣曞姩鐢伙紝鐪嬭捣鏉ユ鏉挎鏉裤€傛墍浠ユ垜浠湪杩欓噷缁欏畠娣诲姞涓€涓姩鐢绘晥鏋溿€傛垜浠敤setTimeout浠f浛requestAnimationFrame锛堜笉鐭ラ亾鐨勫皬浼欎即鍙互浜嗚В涓€涓嬭繖涓睘鎬э紝寰堟湁鐢紒锛夛紝鍥犱负鍦ㄥ皬绋嬪簭鐜涓嬫槸涓嶆敮鎸佺殑constrequestAnimationFrame=function(callback:Function){varcurrTime=newDate().getTime();vartimeToCall=Math.max(0,16.7-(currTime-lastTime));lastTime=currTime+timeToCall;varid=setTimeout(function(){callback(currTime+timeToCall,lastTime);},timeToCall);lastTime=currTime+timeToCall;杩斿洖ID锛泒;constcancelAnimationFrame=function(id:any){clearTimeout(id);};鎮ㄥ彲浠ュ姩鎬佹洿鏀硅繘搴︽潯銆傚ソ浜嗭紝鑷虫鎴戜滑鐨勮妺澶撮€傞厤灏卞畬鎴愪簡锛屾潵鐪嬬湅鏁堟灉鍚э細鍔ㄥ浘鍙兘涓嶆槸寰堟槑鏄撅紝鍙互寰俊鎼滅储NutUI灏忕▼搴忚瘯璇曠湅銆傜粨鏉熻鏈枃浠嬬粛浜哊utUI涓璫ircleProgress缁勪欢鐨勮璁℃€濊矾鍜屽疄鐜板師鐞嗭紝缁欏ぇ瀹朵竴涓紦鍔便€傛渶鍚庤鎻愪竴涓嬫垜浠殑NutUI缁勪欢搴撱€傞暱鏈熶互鏉ワ紝鍥㈤槦鎴愬憳涓€鐩村湪鍔姏缁存姢NutUI銆傚湪浠ュ悗鐨勬棩瀛愰噷锛岃繖浠藉潥鎸佷笉浼氭斁寮冦€傛垜浠粛鐒朵細绉瀬缁存姢鍜岃凯浠o紝涓烘湁闇€瑕佺殑鍚屽鎻愪緵鎶€鏈敮鎸侊紝涓嶅畾鏈熷彂甯冧竴浜涚浉鍏崇殑鏂囩珷锛屽府鍔╁ぇ瀹舵洿濂界殑浜嗚В鍜屼娇鐢ㄦ垜浠殑缁勪欢搴撱€傚揩鐐逛釜Star鉂わ笍鏀寔鎴戜滑鍚