javascript - 垂直定位文本

标签 javascript d3.js rotation

我想将标签的每个字符设置为垂直,如下所示:

G
R
A
P
H

L
A
B
L
E

感谢任何帮助,您可以在下面找到代码:

var centerG = g.append('g')
    .attr('x', ((width / 2) - (barWidth / 2)))
    .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');

centerG.append('text')
    .text('GRAPH LABEL')
    .attr("font-family", "Arimo")
    .attr("font-size", "18px")
    .attr("font-weight", "bold")
    .attr("fill", "#FFFFFF")
    .attr("letter-spacing", "1.5px")
    .attr("text-anchor", "middle")
    .attr("transform", "translate(" + ((width / 2) + barOffset) +
        ", " + yHeight + ") rotate(270)")
    .attr("class", "centerLabelText")
    .attr("y", 0)

最佳答案

您的问题标题(“将文本的每个字符旋转为垂直”,我已编辑)具有误导性:您不想旋转文本的每个字符.如果你停下来看看,文本中的每个字符都在正确的位置!这里没有任何旋转。

您想要的是垂直定位文本

您可以使用传递选择的函数,使用 call,将文本拆分为其字符,并重新定位它们。这是我刚刚创建的示例:

function vertical(elem) {
  var xPos = elem.attr("x")
  var letters = elem.text().split("");
  var tspan = elem.text(null);
  while (letters.length) {
    tspan.append("tspan")
      .text(letters.shift())
      .attr("dy", "1em")
      .attr("x", xPos)
  }
}

这是一个演示:

var svg = d3.select("svg")
var text = svg.append('text')
  .text('GRAPH LABEL')
  .attr("font-family", "Arimo")
  .attr("font-size", "18px")
  .attr("font-weight", "bold")
  .attr("fill", "#444")
  .attr("letter-spacing", "1.5px")
  .attr("text-anchor", "middle")
  .attr("x", 150)
  .attr("y", 20)
  .call(vertical);

function vertical(elem) {
  var xPos = elem.attr("x")
  var letters = elem.text().split("");
  var tspan = elem.text(null);
  while (letters.length) {
    tspan.append("tspan")
      .text(letters.shift())
      .attr("dy", "1em")
      .attr("x", xPos)
  }
}
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg height="300"></svg>

关于javascript - 垂直定位文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279392/

相关文章:

javascript - Angular 库中提供的 HttpInterceptor 不适用于 Angular 应用程序

javascript - 如何使用axios分配react redux state api获取数据

javascript - 为什么我的变量的更改在此函数之外不可见?

Javascript for 循环跳过矩阵内的旋转

php - 在 javascript 中执行 php 脚本?

javascript - 如何取消 Javascript Promise 中的超时?

javascript - <g> 元素不适应 Firefox 上的 <svg>

d3.js - 有没有办法用c3js更改标签?

WPF Canvas.Left/Canvas.Top 在旋转时不是很正确的坐标,为什么?

ios - 蒙版效果是旋转照片