Nói chung khi chúng ta nói về việc làm việc trên SVG, thư viện đầu tiên xuất hiện trong đầu tôi là D3 Js, trong d3 bạn có thể đi theo đường dẫn của bất kỳ hình dạng nào trong svg và chúng ta có thể tạo phép nội suy, Một ví dụ như vậy được nêu dưới đây, Xem qua nếu điều này có thể giúp bạn trong bất kỳ cách nào.
<!DOCTYPE HTML>
<html lang="en">
<head>
</head>
<body>
<div id="loader_container"></div>
<script src="https://d3js.org/d3.v3.min.js"></script>
<script>
function loader(config) {
return function() {
var radius = Math.min(config.width, config.height) / 2;
var tau = 2 * Math.PI;
var arc = d3.svg.arc()
.innerRadius(radius*0.5)
.outerRadius(radius*0.9)
.startAngle(0);
var svg = d3.select(config.container).append("svg")
.attr("id", config.id)
.attr("width", config.width)
.attr("height", config.height)
.append("g")
.attr("transform", "translate(" + config.width / 2 + "," + config.height / 2 + ")")
var background = svg.append("path")
.datum({endAngle: 0.33*tau})
.style("fill", "#4D4D4D")
.attr("d", arc)
.call(spin, 1500)
function spin(selection, duration) {
selection.transition()
.ease("linear")
.duration(duration)
.attrTween("transform", function() {
return d3.interpolateString("rotate(0)", "rotate(360)");
});
setTimeout(function() { spin(selection, duration); }, duration);
}
function transitionFunction(path) {
path.transition()
.duration(7500)
.attrTween("stroke-dasharray", tweenDash)
.each("end", function() { d3.select(this).call(transition); });
}
};
}
var myLoader = loader({width: 960, height: 500, container: "#loader_container", id: "loader"});
myLoader();
</script>
</body>
</html>
Nguồn:
http://bl.ocks.org/MattWoelk/6132258
Bạn có thể điều chỉnh phép nội suy với bất kỳ loại, Chuỗi, ngày nào. Đối với Nội suy, liên kết dưới đây có thể giúp
https://bl.ocks.org/mbostock/3173784
http://jsfiddle.net/SHF2M/
https://codepen.io/frcodecamp/pen/wxXypx
Xây dựng hình dạng svg bên ngoài như hai hình elip được nối với nhau ở hai bên, sau đó chúng ta có thể sử dụng đường dẫn hình elip để nội suy bằng các vị trí xoay, Vị trí xoay phải phụ thuộc vào tiến trình trong màn hình xác nhận.