Сейчас: 18:30:19   19-го апреля 2024 г.
UsefulScript.ruСкриптыТекстовые эффектыПосимвольный вывод текста
14
45

Посимвольный вывод текста с эффектом печатной машинки и подсветкой появляющегося символа

Ранее мы уже рассматривали похожий скрипт в теме Вывод текста с эффектом печатной машинки. В этот раз мы предлагаем Вашему вниманию скрипт, который посимвольно выводит на экран заданные строки (эффект печатной машинки). Основным отличием его от рассмотренного ранее скрипта печатающегося текста является подсветка появляющегося символа.


Данный скрипт удобен тем, что при его помощи возможно поочередно выводить различные сообщения в одном и том же месте странички с эффектом печатной машинки.


Ниже расположен пример работы нашего скрипта:



Для того чтобы точно такой же печатающийся текст с подсветкой появляющегося символа, вставьте следующий фрагмент кода в тело Вашей странички:

JavaScript код:
<script type="text/javascript">
var 
mess=new Array(
 
"Сайт полезных скриптов UsefulScript.ru ",
 
"Скрипты на PHP и JavaScript ",
 
"Обзоры полезных онлайн-сервисов ");

var 
size 32;
var 
txtcol "#C0C0C0";
var 
lastcol "#00CC00";
var 
pause 1500;
var 
speed 70;
var 
i_str 0;
var 
msg msgpre msgafter "";

function 
get_text() {
 
msgpre mess[i].substring(0i_str-1);
 
msgafter mess[i].substring(i_str-1i_str);
 
msg "<span style='position: relative; color:" txtcol "; font-size: " +
 
size "px;'>" msgpre "<span style='color:" lastcol ";'>" msgafter +
 
"</span></span>";
}

function 
go() {
if (
i_str<=mess[i].length-1) {
 
i_str++;
 
get_text();
 if (
document.alltypewriter.innerHTML msg;
 else if (
document.layers) {
  
document.typewriter.document.write(msg);
  
document.typewriter.document.close();
 }
 else 
document.getElementById("typewriter").innerHTML msg;
 var 
timer setTimeout("go()"speed);
}
else {
 
clearTimeout(timer);
 var 
timer setTimeout("changemess()"pause);
}
}

function 
changemess() {
 
i++;
 
i_str 0;
 if (
i>mess.length-10;
 
go();
}
</script>

В том месте Вашей странички, где необходимо выводить заданные строки с эффектом печатной машинки, вставьте следующий код:

HTML код:
<p id="typewriter"></p>

И в конце странички, когда уже загрузится ее основное содержимое, необходимо запустить нашу функцию посимвольного вывода текста следующим образом:

JavaScript код:
<script type="text/javascript">
 
go();
</script>

Как видно из примера, данный скрипт может украсить любую страничку.

Дата создания: 00:49:09 04.10.2012 г.
Посещений: 14642 раз(а).

Комментарии посетителей (22 шт.):
Alex
0
# 1233
(23:27:22  23.10.2013 г.)

Этот скрипт глушит работу скрипта Печатающееся сообщение в StatusBar-е браузера и наоборот, в зависимости, что из них первым было установлено.
В итоге при установке обоих скриптов можно получить только какой-то один вариант вывода текста на сайте.
Ответить

Administrator
2
# 1234
(23:43:44  23.10.2013 г.)

Это происходит из-за того, что в обоих скриптах для наименования массива используется одно и то же имя ("var mess"). Для того чтобы на одной страничке работали сразу оба скрипта, в одном из указанных скриптов необходимо заменить все упоминания массива "mess" на что-нибудь другое.
Ответить

Alex
0
# 1237
(18:23:23  24.10.2013 г.)

Подскажите, пожалуйста, на что лучше заменить, что бы скрипты нормально работали?
Ответить

Administrator
1
# 1239
(19:17:20  24.10.2013 г.)

На что угодно. Это же имя переменной, так что просто во всем скрипте замените "mess" хоть на "The_mess".
Ответить

Baur
0
# 2924
(13:39:27  23.12.2015 г.)

Добрый день! Подскажите, пожалуйста. Как сделать выравнивание по центру, чтобы эффект печати начинался с центра.
Ответить

Administrator
0
# 2925
(20:37:51  23.12.2015 г.)

Замените <p id="typewriter"></p> на <p align="center" id="typewriter"></p>
Ответить

Aleks
0
# 3302
(14:21:45  01.07.2016 г.)

Добрый день! Подскажите, как сделать, чтоб текст писался от начала до конца и в конце остановился и не исчезал?
Ответить

Administrator
0
# 3303
(21:57:09  01.07.2016 г.)

Удалите функцию changemess(), а функцию go() замените на такую:
i_str++;
get_text();
if (document.all) typewriter.innerHTML=msg;
else if (document.layers) {
document.typewriter.document.write(msg);
document.typewriter.document.close();
}
else document.getElementById("typewriter").innerHTML=msg;
var timer=setTimeout("go()", speed);
Ответить

Aleks
0
# 3321
(18:19:16  10.07.2016 г.)

Спасибо за ответ! Меня интересует ещё следующее. Как сделать часть текста одного цвета, а часть другого, я пытался отдельное слово сделать другим цветом, перестаёт работать вообще...
Ответить

Administrator
0
# 3322
(19:28:42  10.07.2016 г.)

Для этого нужно делать уже совсем другой скрипт.
Ответить

Михаил
0
# 3496
(20:10:27  09.10.2016 г.)

Как сделать, чтобы был только один цикл?
Ответить

Administrator
0
# 3497
(20:58:26  09.10.2016 г.)

Удалите строчку: var timer=setTimeout("changemess()", pause);
И всю функцию changemess() { ... }
Ответить

Михаил
0
# 3501
(17:17:27  10.10.2016 г.)

Не совсем то. Обошел, сделав изменения в функции changemess():
function changemess() {
if (n<3){ i++; n++;
i_str=0;
if (i>mess.length-1) {i=0;}
go();} }
Здесь добавил счетчик n который после трех итераций (три строки массива) останавливает печать массива. Ранее в теле скрипта n присвоил значение 1. (var n=1;)
Ответить

Вадим
0
# 3909
(13:06:59  20.05.2017 г.)

Респект автору.
Подскажите, как можно влиять, например, на время задержки, скорость набора?
Может к скрипту пару ручек приделать, если это не очень сложно.
Ответить

Administrator
0
# 3911
(13:27:05  20.05.2017 г.)

Так уже все имеется: var speed=70; - время задержки между появлением символов;
var pause=1500; - время задержки между выводом строк.
Ответить

Евгений
0
# 4060
(18:55:14  02.09.2017 г.)

Здравствуйте!
А как фон изменить на прозрачный?
Ответить

Евгений
0
# 4062
(03:42:47  04.09.2017 г.)

Вернее инвертировать цвет текста в зависимости от фона на котором этот текст.
Ответить

Кузьма
0
# 4071
(10:36:36  14.09.2017 г.)

Добрый день.
Подскажите, пожалуйста: как добавить ссылки к тексту, чтобы переходить по этим ссылкам на другие страницы?
Ответить

Дмитрий
0
# 4134
(12:49:06  16.11.2017 г.)

Подскажите пожалуйста как сделать несколько заголовков с этим эффектом на одной странице.
Ответить

Юрий
0
# 4854
(23:07:51  30.08.2021 г.)

Добрый вечер!
Подскажите, пожалуйста, как вывести текст парами.
Анонс на английском, например. Ниже строчка с русским переводом.
**********************************
"News from Afghanistan."
"Новости из Афганистана"
**********************************
...Как пример.
Ответить

Юрий
0
# 4856
(15:28:42  07.09.2021 г.)

Уважаемый Administrator.
Подскажите, пожалуйста, как отловить момент, когда скрипт заканчивает печать последнего символа строки?
Ответить

Administrator
0
# 4858
(14:28:39  08.09.2021 г.)

В скрипте уже это реализовано и как только строка текста заканчивается, вызывается строчка JS кода: clearTimeout(timer);
Ответить

Закрыть
Ваше имя:
898 + 13 =
Добавить комментарий:
Ваше имя:
898 + 13 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 5

Мешает ли Вам реклама?