【问题标题】:How can I add transform to unicode letters如何将转换添加到 unicode 字母
【发布时间】:2020-04-24 17:09:24
【问题描述】:

我正在用我的语言制作一些文本动画。但是使用 js 将字母分隔为跨度,结果如下:

<span class="letter" style="transform: translate(0.55em, 1.1em) scale(1.5);">ध</span>
<span class="letter" style="transform: translate(0.55em, 1.1em);">्</span>
<span class="letter" style="transform: translate(0.55em, 1.1em);">य</span>
<span class="letter" style="transform: translate(0.55em, 1.1em);">ो</span>

我使用的脚本是

textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "<span class='letter'>$&</span>"); 

html中的结果如下

结果应该是这样的:ध्यो,因为这些空格在 unicode 中组合在一起。

仅当 .letter 与应用转换所需的 display:inline-block 一起应用时才会中断。

有没有一种方法可以实现 ध्यो 的结果并且仍然对每个字母应用转换?

【问题讨论】:

    标签: javascript css dom unicode css-animations


    【解决方案1】:

    对于该语言,您必须用单词将它们分开,因为用字母分开是行不通的。以下代码应该可以工作。

            let textEl = document.querySelector("p");
            if (textEl) {
                let words = textEl.textContent.split(" ");
                let finalStr = words.reduce((accumulator, currentValue, currentIndex) => {
                    return currentIndex === 1 ?
                        `<span class='word'>${accumulator}</span> <span class='word'>${currentValue}</span>` :
                        `${accumulator} <span class='word'>${currentValue}</span>`
                        ;
                });
                textEl.innerHTML = finalStr;
            }
            console.log(textEl.innerHTML);
            
    &lt;p&gt;some text for testing&lt;/p&gt;

    【讨论】:

      【解决方案2】:

      删除空格 -

      更新:我明白了,你不能做内联块

      翻译仅适用于

      块级或原子内联级元素,或其 'display' 属性计算为 'table-row'、'table-row-group'、'table-header-group'、'table-footer-group' 、“表格单元格”或“表格标题”[CSS21]

      document.getElementById("letterDiv").innerText = document.getElementById("spanDiv").innerText;
      .letter {
        transform: translate(0.55em, 1.1em) scale(1.5);
        color: green;
      }
      
      div.letter {
        position: absolute;
        top: 120px;
        left: 100px;
      }
      With whitespace<br/>
      <span class="letter">ध</span>
      <span class="letter">्</span>
      <span class="letter">य</span>
      <span class="letter">ो</span>
      <hr/> Without
      
      <br/>
      <div id="spanDiv">
        <span class="letter">ध</span><span class="letter">्</span><span class="letter">य</span><span class="letter">ो</span>
      </div>
      <br/>
      <hr/> Block
      :<br/>
      
      <div class="letter" id="letterDiv"></div>

      【讨论】:

      • 我认为我的解决方案中没有空格。这正是我从开发工具中粘贴的内容。我的代码实际上看起来像textWrapper.innerHTML = textWrapper.textContent.replace(/\S/g, "&lt;span class='letter'&gt;$&amp;&lt;/span&gt;"); ,所以它将字符串分成跨度,这就是我得到的。我不认为这段代码包含空格
      • 那么如果你不把它分成跨度,而是像我在我的 div 中那样将它插入到一个内部 HTML 中呢?
      • 我需要打破它们,因为我将动画应用于不同的字母。我正在寻找与https://tobiasahlin.com/moving-letters/#7 类似的结果
      • 我会说这是不可能使用你的字母表
      • 是的,我自己也得出了同样的结论。最后我决定逐字逐句。无论如何谢谢:)
      猜你喜欢
      • 1970-01-01
      • 2011-06-11
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多