Tôi khá mới trong thế giới SVG và tôi đang đối mặt với một số vấn đề khi tôi muốn "vẽ" một mũi tên cong.Vẽ hoạt ảnh của một mũi tên trong SVG
Về cơ bản, tôi muốn tạo hoạt ảnh như hình ảnh được giải thích trong this article, nhưng có hình ở cuối đường dẫn để hiển thị mũi tên.
Dưới đây là đoạn code tôi sử dụng cho mũi tên thẳng:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
<defs>
<marker
id="arrow"
orient="auto"
viewBox="0 0 10 10"
markerWidth="3"
markerHeight="4"
markerUnits="strokeWidth"
refX="1" refY="5">
<polyline points="0,0 10,5 0,10 1,5" fill="black" />
</marker>
</defs>
<path
id="line"
marker-end="url(#arrow)"
stroke-width="3"
fill="none"
stroke="black">
<animate
dur="2s"
repeatCount="indefinite"
attributeName="d"
values="M10,10 L10,10; M10,10 L45,25;" />
</path>
Với một chút CSS:
#line
{
stroke-dasharray: 5;
stroke-dashoffset: 10;
-webkit-animation: draw 1s linear infinite;
}
@-webkit-keyframes draw
{
to { stroke-dashoffset: 0;}
}
Kết quả là dưới đây:
Vì vậy, đó là mát mẻ, nhưng bây giờ tôi muốn một mũi tên cong. Vì vậy, tôi đã cập nhật thẻ animate như sau:
<animate
dur="2s"
repeatCount="indefinite"
attributeName="d"
values="M7,121 C7,121 7,121 7,121; M7,121 C66,4 143,75 147,125" />
Tôi vừa thay đổi đường dẫn đến hoạt ảnh để có hình tròn cong. Nhưng kết quả là hình dưới đây:
Tôi nghĩ nó khá hợp lý, nhưng nó không phải là những gì tôi muốn. Điểm đánh dấu hiện đang di chuyển trên một đường thẳng; nó nên đi theo con đường vẽ.
Tôi không có ý tưởng làm thế nào để làm như vậy phải trung thực, bất cứ đề nghị sẽ là tuyệt vời :)
Bạn có thể tìm a JSFiddle here.
Như bạn có thể thấy, không có JS nào được sử dụng trong các thử nghiệm này, sẽ rất tuyệt nếu chúng ta có thể tránh ngôn ngữ này và chỉ sử dụng SVG + CSS.
Cảm ơn trước!
Trong khi liên kết này có thể trả lời câu hỏi, tốt hơn nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo. Câu trả lời chỉ liên kết có thể trở thành không hợp lệ nếu trang được liên kết thay đổi. - [Từ đánh giá] (/ review/low-quality-posts/15799580) – Adam
Cảm ơn @Adam, tôi đã cập nhật ví dụ với mã Chris '. – Paesano2000