javascript - 如何为主要浏览器(以及 Chrome)转换(旋转)句子中的单个字母

标签 javascript css google-chrome d3.js

我要输出一个句子。当句子出现时,所有单个字母都应通过旋转和变大的方式出现。

我的方法如下: 我所做的是拆分句子并将每个字母放在单独的 span 元素中。然后我使用 ccs 转换 -webkit-transform 转换字母。但是,除非您设置 display: inline-block,否则这在 Chrome 中不起作用。然后旋转按预期工作,但不再显示空格。这导致所有单词都被捆绑在一起。

见下文或 here

let containerDiv = "div.chart";

function displayText(_textArray) {
  let sel = d3.select(containerDiv);

  // add headers for all strings but the last one
  for (let i = 0; i < _textArray.length - 1; i++) {
    sel.append("div")
        .attr("class", "header h" + i)
      .append("h1")
        .attr("class", "trans")
        .text(_textArray[i]); 
  }

  // add last string by wrapping each letter around a span
  // which can be styled individually
  let sel2 = sel.append("div")
        .attr("class", "header h" + (_textArray.length - 1))
      .append("h1")
        .style("opacity", 1)
        .attr("class", "trans");

  const lastString = _textArray[_textArray.length-1];
  for (let i = 0; i < lastString.length; i++) {
    sel2.append("span")
      .attr("class", "color-" + (i % 5))
      .text(lastString[i]); 
  }
}

function transitionLetters(_selection){
   _selection
        .transition()
        .duration(2000)
        .delay((d,i) => i * 200)
        .style("opacity", 1)
        .style("-webkit-transform", "rotate(-720deg) scale(1)");
}

let myText = ["I like to eat", "ham and eggs"];
displayText(myText);
d3.selectAll("span").call(transitionLetters);
div.header {
  margin: 0 auto;
  text-align: center;
  width: max-content;
}

h1 span {
  opacity: 0;
  display: inline-block;
  -webkit-transform: rotate(-0deg) scale(0.001);
}

.color-0 { color: rgb(255, 0, 171); }
.color-1 { color: rgb(0, 168, 255); }
.color-2 { color: rgb(171, 0, 255); }
.color-3 { color: rgb(255, 171, 0); }
.color-4 { color: rgb(168, 255, 0); }
<script src="https://d3js.org/d3.v4.min.js"></script>
<meta charset="utf-8">
<body>
    <div class="chart"></div>
</body>

最佳答案

空格在那里,只是没有显示,因为 span 不会显示只有空白的内容。

span { /* or some custom class for those spans */
    white-space:pre;
}

来自这个答案:

https://stackoverflow.com/a/19742967/7355135

关于javascript - 如何为主要浏览器(以及 Chrome)转换(旋转)句子中的单个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49286349/

相关文章:

javascript - 在 TypeScript 中实现接口(interface)原型(prototype)

javascript - Google+ 反馈系统的屏幕截图部分如何工作?

javascript - Google 饼图没有响应

php - 关于 wordpress 问题的 Bootstrap 流体布局

jquery - 将图像对齐到列表中文本的右侧

html - 元素的 firefox 宽度与 webkit-browsers 不同

JavaScript - 如果带有文本的语句无法正常工作

java - 删除生成 PDF 时 @page CSS 选择器的不一致 Flyingsaucer 默认填充

css - 具有不透明度的内联 block ul 导致结束切断

Css 居中 - 它随机跳到位