Definieren Sie eine Kreis- / Bogenanimation in SVG

8

Weiß jemand, wie man einen animierten Bogen / Kreis in SVG definiert, so dass der Bogen bei 0 Grad beginnt und bei 360 Grad endet?

    
GarethOwen 15.07.2010, 15:11
quelle

7 Antworten

6

Sie können es "mit der Hand" malen, indem Sie die Linie des Pfades verwenden und die Position des Bogens berechnen:

%Vor%

Ссылка

    
räph 16.07.2010, 07:23
quelle
6

Eine Möglichkeit besteht darin, einen Kreis zu verwenden und den Strich-Strich-Offset zu animieren 'stroke-dasharray' auch). Ein Beispiel für eine solche Animation (nicht mit einem Kreis, aber das gleiche Prinzip gilt) kann hier .

Die andere Option besteht darin, eine Pfadanimation und Bogensegmentsegmente zum Animieren zu verwenden / Morphing zwischen Pfaden finden Sie in diesem Beispiel .

    
Erik Dahlström 16.07.2010 06:55
quelle
3

Oder vielleicht könnten Sie einen vorgezeichneten Kreis aufdecken, um den gewünschten Effekt zu erzielen:

%Vor%     
user846969 08.09.2013 18:44
quelle
2

Ich war auch ein bisschen enttäuscht, um nicht einfach einen Kreisbogen mit einem Prozent oder einem Winkel machen zu können.

Heutzutage, wenn ich einen Bogen brauche, der nicht Teil eines längeren Pfades ist, benutze ich einen Kreis und einen Schlag, um nur einen Teil dieses Kreises zu zeigen.

%Vor% %Vor%

Sie können hier eine verbesserte Version hier sehen, die Sass für Berechnungen verwendet.

    
long-lazuli 25.11.2015 19:22
quelle
2

%Vor%
    
tdjprog 19.03.2016 19:59
quelle
2

Sie können die SVG auch manuell mit circle und der folgenden Technik zeichnen:

  1. Geben Sie die circle a stroke .
  2. an
  3. Machen Sie die stroke dashed mit einer Strichlänge gleich dem Umfang des Kreises.
  4. Versetze die stroke um eine Länge, die dem Umfang des Kreises entspricht.
  5. Animiere den Strich.

HTML:

%Vor%

CSS:

%Vor%

jsfiddle

Quelle: Ссылка

    
Raphael Rafatpanah 05.01.2017 15:05
quelle
-1

Danke für die Antworten - hier ist ein wenig mehr Informationen darüber, warum ich einen Kreis in SVG animieren möchte:

Wir haben eine Server-Client-Anwendung. Ich plane, SVG-Bilder zu generieren, um Diagramme (Tortendiagramme / Balkendiagramme) auf dem Server darzustellen und das SVG an die Clients zu senden. Wir haben Java- und .NET-Clients. Ich werde clientseitigen Code schreiben, um die vom Server empfangenen SVG-Bilder zu analysieren und zu rendern. Ich plane, nur eine Teilmenge des SVG-Formats zu verwenden - nicht mehr als das, was wir für unsere Diagramme benötigen, aber Animation ist eine Voraussetzung.

Langfristig wäre es schön, einen Ajax-Client zu haben - der auf Browsern ohne Java oder .NET-Laufzeit läuft. Deshalb habe ich das SVG-Format gewählt.

Für eine kurzfristige Lösung denke ich jetzt, dass ich mein eigenes Element zum SVG hinzufügen werde, indem ich einen Bogen mit Start- und Schwenkwinkeln definiere. Dann kann ich leicht die Animation definieren, die ich benötige, indem ich den Schwenkwinkel animiere, und meine Implementierung einfach machen.

Langfristig - wenn wir wirklich einen AJAX / HTML-Client implementieren wollen - muss ich den SVG-Standard neu implementieren und einhalten.

    
GarethOwen 16.07.2010 11:21
quelle