Javascript-Produktion, SVG-Progress-Ball-Beispielfreigabe
Mit der heutigen Entwicklung von SVG wurde es in verschiedenen Anwendungen im Internet verwendet, einschließlich der Erstellung von Fortschrittsbalken und Fortschrittsbällen. Wie erstellt man diese Art von animierter Interaktion? Als nächstes verraten wir Ihnen das Geheimnis!
1. Interessenberatung > Endeffekt - SVG-Fortschrittsball:
2. Struktur
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .perText{font-size:58pt;font-family:Arial Rounded MT Bold;fill:#AD054A;text-anchor:middle;dominant-baseline: middle;text-shadow: 3px 0 6px #fff;transform:translate3d(6px,0,0);} </style> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" width="384.415px" height="383.232px" viewBox="0 0 384.415 383.232" > <circle style="fill:#E8427D;" cx="192.668" cy="195.399" r="180"/> <circle style="fill:#FFFFFF;" cx="192.668" cy="195.399" r="150"/> <circle style="display:none;fill:none;stroke:#000000;stroke-miterlimit:10;" cx="796.667" cy="-58.434" r="140.123"/> <path style="fill:none;" d="M656.667,8386.899"/> <path style="fill:none;" d="M656.667-7996.101"/> <g> <!-- 定义变量 --> <defs> <circle id="SVGID_1_" cx="191.668" cy="195.069" r="135" fill="red"/> </defs> <clipPath id="SVGID_2_"> <use xlink:href="#SVGID_1_" style="overflow:visible;" cx="191.668" cy="295.069" /> </clipPath> <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="431.4199" y1="221.6279" x2="-31.4133" y2="488.8449"> <stop offset="0" style="stop-color:#DA1654"/> <stop offset="0.6452" style="stop-color:#E1457C;stop-opacity:0.4731"/> <stop offset="1" style="stop-color:#F7F8F8;stop-opacity:0.3"/> </linearGradient> <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="462.0762" y1="286.5215" x2="-63.9186" y2="590.2048"> <stop offset="0" style="stop-color:#F7F8F8;stop-opacity:0.3"/> <stop offset="0.5" style="stop-color:#E1457C;stop-opacity:0.4731"/> <stop offset="0.871" style="stop-color:#DA1654"/> </linearGradient> <!-- clip-path:url(#SVGID_2_) --> <g class="group" id='pathGroup' style="clip-path:url(#SVGID_2_)"> <!--<path class="bgPath bgPath_01" style="fill:url(#SVGID_3_);" id="bgPathOne"> <animate dur="5s" attributeName="d" attributeType="XML" repeatCount="indefinite" values="" calcMode="linear" keyTimes="0;.6;1"></animate> </path> --> <path class="bgPath bgPath_02" style="fill:url(#SVGID_3_);" d=""> <animate dur="5s" attributeName="d" attributeType="XML" repeatCount="indefinite" values="" calcMode="linear" keyTimes="0;.3;1"></animate> </path>--> </g> <text x='192.668' y='195.399' class="perText">50%</text> </g> </svg> </body> </html>
3. JavaScript berechnet den Pfad und steuert die SVG-Animation
class svgPercent { constructor({y1,y2,group,text}) { this.y1 = y1 ? y1 : 0; this.y2 = y2 ? y2 : 0; this.group = group; this.xmlns = 'http://www.w3.org/2000/svg'; this.textBox = text; this.currentPercentText = '0%'; //初始 进度球 this.init(); } init() { //1.获取路径数据 this.getSvgPathData(this.y1,this.y2); //2.根据数据绘制路径 this.createPath(); //3.设置百分比 this.setPercentText(); //4.模拟进度增长的情况 this.changePathShape(); } initChangeShape() { //1.获取路径数据 this.getSvgPathData(this.y1,this.y2); //2. 设置路径形状改变 this.setPaths(); } //获取路径数据 getSvgPathData(y,y2) { this.d1=`M327.898,${225.235+y}c3.086,${-11.496+y},4.74,${-11.496+y},4.74,${-36.167+y}c0,${0+y},-31.712,${-28.628+y},-140.67,${-2+y}c-120.71,${29.5+y},-125.21,${11+y}-140.67,${0.35+y}c0.032,${13.105+y},1.862,${25.787+y},5.247,${37.817+y}h-90.043 v390 h467 v-390 H327.898 z`; this.a1=`M 327.898,${225.235+y}c 3.086,${-11.496+y},4.74,${-23.611+y},4.74,${-36.167+y}c 0,${0+y},-23.971,${54.165+y},-140.67,${-2+y}c-111.97,${-53.888+y}-135.301,${-9.835+y}-140.67,${0.35+y}c 0.032,${13.105+y},1.862,${25.787+y},5.247,${37.817+y}h-90.043 v390 h 467 v-390 H 327.898 z`; this.d2 = `M 327.898,${237.031+y2}c 3.086,${-14.234+y2},4.74,${-29.236+y2},4.74,${-44.785+y2}c 0,${0+y2}-30.305,${36.653+y2}-140.67,${-2.477+y2}c-118.866,${-42.144+y2}-134.529,${-9.191+y2}-140.67,${0.434+y2}c 0.032,${16.229+y2},1.862,${31.933+y2},5.247,${46.828+y2}h-90.043 v 405.865 h 467 V ${237.031+y2} H 327.898 z`; this.a2 = `M 327.898,${237.031+y2}c 3.086,${-14.234+y2},4.74,${-29.236+y2},4.74,${-44.785+y2}c 0,${0+y2}-56.638,${-36.347+y2}-140.67,${-2.477+y2}C 74.997,${236.916+y2},63,${199.232+y2},51.299,${190.203+y2}c 0.032,${16.229+y2},1.862,${31.933+y2},5.247,${46.828+y2}h-90.043 v 405.865 h 467 V ${237.031+y2} H 327.898 z`; } //创建path路径 createPath(group) { this.pathOne = document.createElementNS(this.xmlns,'path'); this.animate = document.createElementNS(this.xmlns,'animate'); this.pathOne.setAttribute('style','fill:url(#SVGID_3_)'); this.pathOne.setAttribute('d',this.d1); this.animate.setAttribute('dur','5s'); this.animate.setAttribute('attributeName','d'); this.animate.setAttribute('attributeType','XML'); this.animate.setAttribute('repeatCount','indefinite'); this.animate.setAttribute('keyTimes','0;0.55;1'); this.animate.setAttribute('values',this.d1+';'+this.a1+';'+this.d1); this.pathOne.appendChild(this.animate); this.group.appendChild(this.pathOne); this.pathTwo = document.createElementNS(this.xmlns,'path'); this.animate2 = document.createElementNS(this.xmlns,'animate'); this.pathTwo.setAttribute('style','fill:url(#SVGID_3_)'); this.pathTwo.setAttribute('d',this.d2); this.animate2.setAttribute('dur','5s'); this.animate2.setAttribute('attributeName','d'); this.animate2.setAttribute('attributeType','XML'); this.animate2.setAttribute('repeatCount','indefinite'); this.animate2.setAttribute('keyTimes','0;0.55;1'); this.animate2.setAttribute('values',this.d2+';'+this.a2+';'+this.d2); this.pathTwo.appendChild(this.animate2); this.group.appendChild(this.pathTwo); } //设置path路径 setPaths() { this.pathOne.setAttribute('d',this.d1); this.pathTwo.setAttribute('d',this.d2); this.animate.setAttribute('values',this.d1+';'+this.a1+';'+this.d1); this.animate2.setAttribute('values',this.d2+';'+this.a2+';'+this.d2); } //设置百分比文字 setPercentText(val) { let vals = val ? val : this.currentPercentText; this.textBox.textContent = vals; } //改变路径形状 changePathShape() { let dis = 0.3; let percent = ''; let p = ''; let start = this.y1; let end = -50; let This = this; function step() { This.y1 -= dis; This.y2 -= dis; This.initChangeShape(); percent = parseInt((Math.abs(This.y1 - start) / Math.abs(end-start))*100); p = percent + '%'; This.setPercentText(p); if(percent < 50){ requestAnimationFrame(step); } } requestAnimationFrame(step); } } // 初始化配置参数调用 let obj = { y1: 50, y2: 50, group: document.querySelector('#pathGroup'), text: document.querySelector('.perText') } new svgPercent(obj);
4. Zusammenfassung:
(1) Steuern Sie den Pfad durch das animierte d-Attribut (Beachten Sie, dass es Fallstricke gibt. Werte haben mindestens drei Wertesätze.values="ursprünglicher Wert; zu ändernder Wert; ursprünglicher Wert")
(2) Das d-Attribut Der Pfad wird über die JS-Steuerung verwendet (Beachten Sie, dass es einen Fallstrick gibt. Beim Zusammenfügen von Zeichenfolgen darf am Ende kein Semikolon stehen und es wird ein Fehler gemeldet; beim Zusammenfügen von Werten müssen Sie ein separates Semikolon hinzufügen)
(3) Die Verwendung von ClipPath-Tags ist in diesem Fall ein Kern, um rollende Wellen von unten nach oben zu implementieren.
Das obige ist der detaillierte Inhalt vonJavascript-Produktion, SVG-Progress-Ball-Beispielfreigabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Quark Netdisk und Baidu Netdisk sind beide sehr praktische Speichertools. Viele Benutzer fragen sich, ob diese beiden Softwareprogramme kompatibel sind. Wie teile ich Quark Netdisk mit Baidu Netdisk? Auf dieser Website erfahren Sie ausführlich, wie Sie Quark Network Disk-Dateien auf der Baidu Network Disk speichern. So speichern Sie Dateien von Quark Network Disk auf Baidu Network Disk Methode 1. Wenn Sie wissen möchten, wie Sie Dateien von Quark Network Disk auf Baidu Network Disk übertragen, laden Sie zunächst die Dateien herunter, die auf Quark Network Disk gespeichert werden müssen, und öffnen Sie sie dann Wählen Sie im Baidu Network Disk-Client den Ordner aus, in dem die komprimierte Datei gespeichert werden soll, und doppelklicken Sie, um den Ordner zu öffnen. 2. Klicken Sie nach dem Öffnen des Ordners oben links im Fenster auf „Hochladen“. 3. Suchen Sie die komprimierte Datei, die auf Ihren Computer hochgeladen werden soll, und klicken Sie, um sie auszuwählen.

1. Zuerst rufen wir NetEase Cloud Music auf und klicken dann auf die Software-Homepage-Oberfläche, um die Song-Wiedergabeoberfläche aufzurufen. 2. Suchen Sie dann in der Song-Wiedergabeoberfläche die Schaltfläche für die Freigabefunktion oben rechts, wie im roten Feld in der Abbildung unten gezeigt, klicken Sie, um den Freigabekanal im Freigabekanal auszuwählen, und klicken Sie auf die Option „Teilen für“. Wählen Sie unten den ersten Eintrag „WeChat Moments“ aus, mit dem Sie Inhalte für WeChat Moments freigeben können.

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert

Vor kurzem hat der Baidu Netdisk Android-Client eine neue Version 8.0.0 eingeführt. Diese Version bringt nicht nur viele Änderungen, sondern fügt auch viele praktische Funktionen hinzu. Am auffälligsten ist unter anderem die Verbesserung der Ordnerfreigabefunktion. Jetzt können Benutzer ganz einfach Freunde einladen, beizutreten und wichtige Dateien im Beruf und im Privatleben zu teilen, was eine bequemere Zusammenarbeit und gemeinsame Nutzung ermöglicht. Wie teilen Sie die Dateien, die Sie benötigen, mit Ihren Freunden? Ich hoffe, dass Ihnen der Herausgeber dieser Website weiterhelfen kann. 1) Öffnen Sie die Baidu Cloud APP, wählen Sie zuerst den entsprechenden Ordner auf der Startseite aus und klicken Sie dann auf das Symbol [...] in der oberen rechten Ecke der Benutzeroberfläche (wie unten gezeigt). 2) Klicken Sie dann auf [+]. Klicken Sie auf die Spalte „Gemeinsame Mitglieder“ 】 und markieren Sie abschließend alle

Mango TV bietet verschiedene Arten von Filmen, Fernsehserien, Varietés und anderen Ressourcen, und Benutzer können frei wählen, ob sie diese ansehen möchten. Mango TV-Mitglieder können nicht nur alle VIP-Dramen ansehen, sondern auch die höchste Bildqualität einstellen, damit Benutzer die Dramen gerne ansehen können. Nachfolgend stellt Ihnen der Herausgeber einige kostenlose Mango TV-Mitgliedskonten vor, die Sie nutzen können. Beeilen Sie sich und werfen Sie einen Blick darauf Schau mal. Kostenloses Teilen des neuesten Mitgliedskontos von Mango TV 2023: Hinweis: Dies sind die neuesten gesammelten Mitgliedskonten. Sie können sich anmelden und diese direkt verwenden. Ändern Sie das Passwort nicht nach Belieben. Kontonummer: 13842025699 Passwort: qds373 Kontonummer: 15804882888 Passwort: evr6982 Kontonummer: 13330925667 Passwort: jgqae Kontonummer: 1703

Mit der rasanten Entwicklung der Internetfinanzierung sind Aktieninvestitionen für immer mehr Menschen zur Wahl geworden. Im Aktienhandel sind Kerzendiagramme eine häufig verwendete Methode der technischen Analyse. Sie können den sich ändernden Trend der Aktienkurse anzeigen und Anlegern helfen, genauere Entscheidungen zu treffen. In diesem Artikel werden die Entwicklungskompetenzen von PHP und JS vorgestellt, der Leser wird zum Verständnis des Zeichnens von Aktienkerzendiagrammen geführt und es werden spezifische Codebeispiele bereitgestellt. 1. Aktien-Kerzendiagramme verstehen Bevor wir uns mit dem Zeichnen von Aktien-Kerzendiagrammen befassen, müssen wir zunächst verstehen, was ein Kerzendiagramm ist. Candlestick-Charts wurden von den Japanern entwickelt

JavaScript-Tutorial: So erhalten Sie HTTP-Statuscode. Es sind spezifische Codebeispiele erforderlich. Vorwort: Bei der Webentwicklung ist häufig die Dateninteraktion mit dem Server erforderlich. Bei der Kommunikation mit dem Server müssen wir häufig den zurückgegebenen HTTP-Statuscode abrufen, um festzustellen, ob der Vorgang erfolgreich ist, und die entsprechende Verarbeitung basierend auf verschiedenen Statuscodes durchführen. In diesem Artikel erfahren Sie, wie Sie mit JavaScript HTTP-Statuscodes abrufen und einige praktische Codebeispiele bereitstellen. Verwenden von XMLHttpRequest

HP-Drucker sind in vielen Büros unverzichtbare Druckgeräte. Durch die Installation des Druckertreibers auf dem Computer können Probleme, wie zum Beispiel, dass der Drucker keine Verbindung herstellen kann, perfekt gelöst werden. Wie installiert man den HP-Druckertreiber? Der folgende Editor stellt Ihnen zwei Methoden zur Installation von HP-Druckertreibern vor. Die erste Methode: Laden Sie den Treiber von der offiziellen Website herunter. 1. Durchsuchen Sie die offizielle Website von HP China in der Suchmaschine und wählen Sie in der Support-Spalte [Software und Treiber] aus. 2. Wählen Sie die Kategorie [Drucker] aus, geben Sie Ihr Druckermodell in das Suchfeld ein und klicken Sie auf [Senden], um Ihren Druckertreiber zu finden. 3. Wählen Sie den entsprechenden Drucker entsprechend Ihrem Computersystem aus. Wählen Sie für Win10 den Treiber für das Win10-System. 4. Nach erfolgreichem Download finden Sie es im Ordner
