javascript – 在svg:translate vs position x和y

当我想要简单的对象如rect或line应该使用transform属性或x和y属性?

// this
d3.selectAll('rect')
    .attr('x', Number)
    .attr('y', 0)

// or this?
d3.selectAll('rect')
    .attr("transform", function(d) { return 'translate(' + d + ', 0)' } );

什么是性能差异?

在SVG变换中不是硬件加速。它们对于单个元素具有相同的性能(在我的经验中)。然而,我使用变换更多地移动的东西,因为在SVG不是所有的元素都有一个x或y属性,考虑…

<line x1="0" y1="0" x2="100" y2="100" />
<circle cx="100" cy="100" r="100" />
<path d="M 0 0 L 100 100" />
<rect x="0" y="0" width="100" height="100" />

如果您不使用转换,则必须为每个这些元素写一个不同的实现。一个变革确实更快的领域是移动大量的元素,如果你有…

<g transform="translate(100, 100)">
  <line x1="0" y1="0" x2="100" y2="100" />
  <circle cx="100" cy="100" r="100" />
  <path d="M 0 0 L 100 100" />
  <rect x="0" y="0" width="100" height="100" />
</g>

处理密集度要小于单独移动每个元素

http://stackoverflow.com/questions/15989854/in-svg-translate-vs-position-x-and-y

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 在svg:translate vs position x和y