HTML 模板
自定义 HTML 模板可用于 lines
、words
和 chars
属性,然后作为所有分割元素的包装器。
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);
}