0
我打算使用d3.js圍繞其中心旋轉矩形。 我的代碼是使用d3.js圍繞其中心的奇怪的矩形旋轉
var svg = d3.select("body")
.append("svg").attr("width", 200).attr("height", 200).append("rect")
.attr("x", 50)
.attr("y", 50)
.attr("fill", "black")
.attr("width", 100)
.attr("height", 100)
.transition()
.ease("linear")
.duration(1000)
.attr("transform", "rotate(180,100,100)");
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
它旋轉,涉及到其原始x,矩形的y座標,但 不旋轉過程中圍繞其中心旋轉。
正確的代碼,我在網絡上找到的是
var svg = d3.select("body").append("svg").attr("width", 200).attr("height", 200);
var rect = svg.append("rect")
.attr("x", 50)
.attr("y", 50)
.attr("width", 100)
.attr("height", 100);
rect.transition().duration(5000)
.attrTween("transform", rotTween);
function rotTween() {
var i = d3.interpolate(0, 360);
return function(t) {
return "rotate(" + i(t) + ",100,100)";
};
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
這個矩形圍繞其中心旋轉正確。但是我看不出兩個代碼之間有什麼區別。有什麼不同?
可能重複[D3.js動畫旋轉(HTTP:/ /stackoverflow.com/questions/13313043/d3-js-animate-rotation) –
在您的示例中,補間將適用於所有旋轉和平移的參數。這就是你擺動效果的原因。 矩形既是平移又是旋轉的。在這個例子中,你已經把_return旋轉(「+ i(t)+」,100,100)「; _你可以看到只有旋轉角度在tween中受到影響。 – Cyril