Maison > interface Web > tutoriel CSS > Comment envelopper du texte dans D3 avec une limite de caractères ?

Comment envelopper du texte dans D3 avec une limite de caractères ?

Linda Hamilton
Libérer: 2024-10-25 07:04:02
original
811 Les gens l'ont consulté

How to Wrap Text in D3 with a Character Limit?

Envelopper le texte dans D3

Pour envelopper le texte dans D3, vous pouvez implémenter une fonction qui ajoute dynamiquement plusieurs éléments à votre nœuds dans une certaine limite de caractères :

<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>
Copier après la connexion

Ensuite, au lieu de définir directement le texte de chaque nœud, vous devez appeler la fonction wrap dessus :

<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>
Copier après la connexion

Cela enveloppera votre texte basé sur la limite de caractères spécifiée dans les limites de votre nœuds, leur permettant de circuler naturellement comme dans l'exemple fourni.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal