Задать вопрос
Ingernirated
@Ingernirated
Романыч

Как собрать слово из букв?

Всем привет!
Нужно сделать слово, которое собирается из букв.
Т.е. влетает одна, за ней вторая и так всё слово.
Сделать Анимация и появление одной не трудно, но остальные, если изменять innerHTML просто рядом с ней появляются, а не долетают с боку.
Как к новым буквам добавить анимацию?
  • Вопрос задан
  • 318 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Будем вставлять вместо текста элементы, каждый из которых содержит по одной букве.

Куда: <div id="container"></div>.

Как анимировать появление элементов:

#container span {
  display: inline-block;
  white-space: pre;
  font-size: 40px;
  animation: span .2s ease-out;
}
@keyframes span {
  from {
    transform: translateX(500px);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

Как перебирать с задержкой массивоподобный объект:

const forEachWithDelay = (arr, delay, callback) =>
  (function next(i) {
    if (i < arr.length) {
      setTimeout(() => (callback(arr[i]), next(-~i)), delay);
    }
  })(0);

// или

async function forEachWithDelay(arr, delay, callback) {
  for (let i = 0; i < arr.length; i++) {
    await new Promise(r => setTimeout(r, delay));
    callback(arr[i]);
  }
}

Вот так всё просто получается:

forEachWithDelay(
  'hello, world!!',
  100,
  n => document
    .querySelector('#container')
    .insertAdjacentHTML('beforeend', `<span>${n}</span>`)
);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Bhudh
Изменять HTML не по буквам, а по элементам, содержащим букву.
У элементов есть свойства позиции, а у куска текста их нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы