单词

定义词语是否以及如何分割。
分割后的词语元素可通过 TextSplit 实例的 words 属性返回的数组进行访问。

const { words } = text.split(target, { words: true });

在内部,对于支持的浏览器,词语分割是使用原生的 Intl.Segmenter 对象完成的,允许分割不使用空格的语言(如日语、中文、泰语、老挝语、高棉语、缅甸语等)中的词语,对于旧版浏览器,则回退到使用 String.prototype.split()

默认分割包装器

默认情况下,每个词语都包裹在一个带有以下样式和数据属性的 span 元素中

<span style="display: inline-block;" data-line="0" data-word="0">Split</span>
<span style="display: inline-block;" data-line="0" data-word="1">by</span>
<span style="display: inline-block;" data-line="0" data-word="2">words</span>

自定义分割包装器

分割包装器可以通过传入一个 分割参数 Object 进行配置,或传入一个自定义 HTML 模板 String

当也按行分割时,词语动画化

每次行分割都会覆盖现有词语元素,这会导致正在运行的词语动画在字体加载完成后或文本元素每次调整大小时停止。
split.addEffect() 方法中声明动画可确保在调整大小之间连续播放,并在使用 split.revert() 时自动将其还原。

const split = text.split(target, params);

split.addEffect(({ lines, words, chars }) => animate([lines, words, chars], {
  opacity: { from: 0 },
}));

split.revert(); // This also reverts the animation declared with addEffect

接受

默认值

true

词语代码示例

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

const { words } = text.split('p', {
  words: { wrap: 'clip' },
})

animate(words, {
  y: [
    { to: ['100%', '0%'] },
    { to: '-100%', delay: 750, ease: 'in(3)' }
  ],
  duration: 750,
  ease: 'out(3)',
  delay: stagger(100),
  loop: true,
});
<div class="large centered row">
  <p class="text-xl">Split text by words.<br>単語ごとに分割します。</p>
</div>
<div class="small row"></div>