HTML 模板

自定义 HTML 模板可用于 lineswordschars 属性,然后作为所有分割元素的包装器。

HTML 模板必须包含至少一个 '{value}' 变量,该变量将被分割值替换。同样,可以使用 '{i}' 变量,它将被当前的分割索引替换。

所有必要的样式(如 'display: inline-block;')将自动应用,无需在模板中定义。

例如,如果您将以下模板传递给 char 参数,像这样

text.split('p', { chars: '<em class="char-{i}">{value}</em>' });

分割输出将是

<p>
  <em class="char-0" style="display: inline-block;">H</em>
  <em class="char-1" style="display: inline-block;">E</em>
  <em class="char-2" style="display: inline-block;">L</em>
  <em class="char-3" style="display: inline-block;">L</em>
  <em class="char-4" style="display: inline-block;">O</em>
</p>

接受

包含至少一个 '{value}' 引用的 String

HTML 模板代码示例

import { createTimeline, stagger, text } from 'animejs';

text.split('p', {
  chars: `<span class="char-3d word-{i}">
    <em class="face face-top">{value}</em>
    <em class="face-front">{value}</em>
    <em class="face face-bottom">{value}</em>
  </span>`,
});

const charsStagger = stagger(100, { start: 0 });

createTimeline({ defaults: { ease: 'linear', loop: true, duration: 750 }})
.add('.char-3d', { rotateX: -90 }, charsStagger)
.add('.char-3d .face-top', { opacity: [.5, 0] }, charsStagger)
.add('.char-3d .face-front', { opacity: [1, .5] }, charsStagger)
.add('.char-3d .face-bottom', { opacity: [.5, 1] }, charsStagger);
<div class="large centered row">
  <p class="text-xl">Custom HTML template.</p>
</div>
.char-3d {
  position: relative;
  transform-style: preserve-3d;
  transform-origin: 50% 50% 1rem;
}

.face {
  position: absolute;
  left: 0;
}

.face-bottom {
  top: 100%;
  transform-origin: 50% 0%;
  transform: rotateX(90deg);
}

.face-top {
  bottom: 100%;
  transform-origin: 50% 100%;
  transform: rotateX(-90deg);
}