>  기사  >  웹 프론트엔드  >  문자 제한을 사용하여 D3에서 텍스트를 래핑하는 방법은 무엇입니까?

문자 제한을 사용하여 D3에서 텍스트를 래핑하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-25 07:04:02721검색

How to Wrap Text in D3 with a Character Limit?

D3에서 텍스트 래핑

D3에서 텍스트를 래핑하려면 여러 특정 문자 제한 내의 노드:

<code class="javascript">function wrap(text, width) {
  text.each(function () {
    var words = d3.select(this)
      .text()
      .split(/\s+/);

    words = words.reverse();

    var line = [];
    var lineNumber = 0;
    var lineHeight = 1.1; // ems
    var x = text.attr("x");
    var y = text.attr("y");
    var dy = 0; // parseFloat(text.attr("dy"));

    var tspan = text
      .text(null)
      .append("tspan")
      .attr("x", x)
      .attr("y", y)
      .attr("dy", dy + "em");

    while (word = words.pop()) {
      line.push(word);
      tspan.text(line.join(" "));
      if (tspan.node().getComputedTextLength() > width) {
        line.pop();
        tspan.text(line.join(" "));
        line = [word];
        tspan = text
          .append("tspan")
          .attr("x", x)
          .attr("y", y)
          .attr("dy", ++lineNumber * lineHeight + dy + "em")
          .text(word);
      }
    }
  });
}</code>

그런 다음 각 노드의 텍스트를 직접 설정하는 대신 해당 노드에서 줄 바꿈 기능을 호출해야 합니다.

<code class="javascript">// Add entering nodes in the parent’s old position.
node.enter()
  .append("text")
  .attr("class", "node")
  .attr("x", function (d) { return d.parent.px; })
  .attr("y", function (d) { return d.parent.py; })
  .text("Foo is not a long word")
  .call(wrap, 30); // wrap the text in <= 30 pixels</code>

이렇게 하면 제공된 예시처럼 노드가 자연스럽게 흐르도록 합니다.

위 내용은 문자 제한을 사용하여 D3에서 텍스트를 래핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.