d3js学习——svg的转换

svg 引入了一个新属性,transform 为支持转换,可能的值有:

  • translate(tx ty) - 它有两个选项, tx沿x轴平移, ty沿y轴平移。 例如 - translate(30 30)。
  • rotate(angle cx cy) - 它有三个选项, angle指旋转角度, cxcy指的是x和y轴旋转的中心。 如果未指定cxcy ,则默认为坐标系的当前原点。 例如 - rotate(60)。
  • scale(sx sy) - 它有两个选项, sx沿x轴的比例因子, sy沿y轴的比例因子。 这里, sy是可选的,如果没有指定,则它取sx的值。 例如 - scale(10)。
  • skew (skew-angle) - 只需一个选项; skew-angle指的是SkewX沿x轴的角度和SkewY沿y轴的角度。 例如 - skewx(20)。
<svg width="300" height="300">
  <rect
    x="20"
    y="20"
    width="60"
    height="60"
    fill="green"
    transform="translate(60 60) rotate(45)"
  ></rect>
</svg>

转换也可以用于 SVG 组元素,如:

<svg width="300" height="300">
  <g transform="translate(60 60) rotate(30)">
      <rect
        x="20"
        y="20"
        width="60"
        height="60"
        fill="green"
        transform="translate(60 60) rotate(45)"
      ></rect>
		<circle cx="0" r="30" fill="red">
		</circle>
	</g>
</svg>

使用d3js创建svg

let group = d3
    .select(".ground")
    .append("svg")
    .attr("width", 300)
    .attr("height", 300)
    .append("g");
  group
    .attr("transform", "translate(60,60) rotate(30)")
    .append("rect")
    .attr("x", 20)
    .attr("y", 20)
    .attr("width", 60)
    .attr("height", "30")
    .attr("fill", "purple");
  group
    .append("circle")
    .attr("cx", 0)
    .attr("cy", 0)
    .attr("r", 35)
    .attr("fill", "red");

单独管理转换的库——d3Transform

<script src = "http://d3js.org/d3.v4.min.js"></script>
<script src = "d3-transform.js"></script>

const my_transform = d3Transform().translate([60,60]).rotate(30);
const group = svg.append("g").attr("transform", my_transform)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值