Создание эффекта набора текста
2 декабря 2017 | Опубликовано в css | 1 Комментарий »
Во многих фильмах используется набор текста на экране, например, для представления нового места действия. И в этом уроке мы воссоздадим этот эффект, используя веб-технологии. Существует много вариантов создания подобного разными способами, в нашем случае для этого используется JavaScript.
Печать текста
В большинстве случаев для создания такого эффекта наиболее подойдет моноширинный шрифт. Поместим текст в подходящий элемент:
<pre id="teletype" hidden>Somewhere in the South Pacific</pre>
У идентификатора .teletype есть атрибут скрыто, который прячет его. Через одну-две миллисекунды после того, как он в скрытом виде появится на странице, текстовая строка скопируется с помощью JavaScript, после задания элемента курсора:
let cursor = "<span>|</span>", telecopy = teletype.innerHTML;
Текст печатается с использованием следующей функции:
function typeIt() { let counter = 0; teletype.innerHTML = cursor; teletype.removeAttribute("hidden"); let i = setInterval(function(){ teletype.innerHTML = telecopy.substr(0, counter) + cursor; counter++; if(counter === telecopy.length + 1) { clearInterval(i); } }, 100); } typeIt();
Функция typeIt устанавливает переменную счетчика в нуль и свойство innerHTML элемента на экране — в курсор перед тем, как показать измененный элемент пользователю.
После этого JavaScript зацикливается в функции, захватывая все новые буквы из переменной telecopy, каждый раз добавляя курсор в конец, с промежутком в 1/10 секунды или 100 миллисекунд между циклами. Когда количество циклов равняется количеству букв в исходной строке, возвращается функция setInterval.
Добавление курсору мигания
Во время печати и после ее завершения элемент курсора должен регулярно мигать, как будто ожидается продолжение ввода информации. Это создается с помощью анимации CSS:
@keyframes blink { from, to { color: transparent; } 50% { color: black; } }
Анимация вызывается с помощью этой записи:
#teletype span { animation: blink 1s step-end infinite; }
Ниже находится более сложная версия, которая использует введенную пользователем строку, а также этот вариант можно увидеть на сайте CodePen.
Если Вам нужно более продвинутое решение с большим количеством опций, попробуйте использовать скрипты, такие как, например, TypedJS, созданный Matt Boldt.
Автор урока Dudley Storey
Перевод — Дежурка
Смотрите также:
Комментарии
Похожие статьи
- Использование множественных фоновых изображений CSS: основы
- Создание элементов, расположенных ровно по центру, с высотой и шириной, заданными в процентах
- Использование плавной прокрутки и ее недостатки
- Использование тега span для разделения слов в ссылках в CSS
- Использование порядка расположения множественных фоновых изображений