gpt4 book ai didi

javascript - D3.js,CSS3 - 旋转矩形使其成一直线

转载 作者:太空宇宙 更新时间:2023-11-03 17:45:03 25 4
gpt4 key购买 nike

我正在使用 D3.js创建一个圆弧和 4 个矩形。这些 Ractangles 将 donut 分成几部分。

我希望 Ractangle 直线对齐

var width=200,height=300,innerRadius =100, outerRadius=80;
var wheel = d3.select("#wheel")
.append("svg").attr("width",width).attr("height",height)

arc = d3.svg.arc()
.innerRadius(innerRadius).outerRadius(outerRadius)
.startAngle(0).endAngle(2*Math.PI)

rectData = [
{x:width/2,y:height/2},
{x:width/2,y:height/2},
{x:width/2,y:height/2},
{x:width/2,y:height/2},
]
rect = wheel.selectAll("g.rect")
.data(rectData).enter()
.append("g")
.attr("transform",function(d,i){
var rotate = 90*i;
return "translate(100,150) rotate("+rotate+")"
}).attr("class","rect")

rect.append("rect")
.attr("width",20).attr("height",outerRadius)

wheel.append("path").attr("d",arc)
.attr("transform","translate("+width/2+","+height/2+")")
.attr("class","donut")

我正在使用 transform-origin,但没有用。

http://jsfiddle.net/kmdr72wc/4/

最佳答案

transform-origin 是一个 CSS 属性,但您正在使用 SVG 属性进行旋转。

SVG rotate 允许您设置 origin但对于你的情况,修复翻译可能更容易:

.attr("transform",function(d,i){
var rotate = 90*i;
var rotX = 100, rotY = 150;
if (i === 0){
rotX -= 10;
} else if (i === 1){
rotY -= 10;
} else if (i === 2){
rotX += 10;
} else if (i === 3){
rotY += 10;
}
return "translate("+rotX+","+rotY+") rotate("+rotate+")";
});

更新 fiddle here .

关于javascript - D3.js,CSS3 - 旋转矩形使其成一直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com