HTML 模板

自定义 HTML 模板可用于 lineswordschars 属性,它们将作为所有拆分元素的包装器。

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

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

例如,如果您将以下模板传递给 char 参数,如下所示:

splitText('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>

接受

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

HTML 模板代码示例

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

splitText('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);
}