Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перебежка по буквам. (https://javascript.ru/forum/misc/24523-perebezhka-po-bukvam.html)

art13 27.01.2012 13:08

Да я понимаю, что это очень тяжело для браузера. Времени очень не хватает сейчас заняться этой задачкой.

Keeper 27.01.2012 23:01

У меня глупый вопрос, а зачем плодить кучу элементов <span>.
Может стоит тягать по букве с помощью функции slice(startPos,endPos), а для анимации использовать один элемент (ну если строго по букве перемещать) в который перемещаемая буква будет закидываться??

Ну или для унификации функции сделать обертывание буквы элементом "на лету" ...

trikadin 27.01.2012 23:05

Можно и так.

Keeper 27.01.2012 23:43

Aж понравилось )

<html>
<head>
</head>
<body>
<div id="t" style="position: absolute">простидижетатор</div>
<script>

var obj = document.getElementById("t");
var x = 0;
var span = {};
var animation_on = false;

function move() {
		x=x+1;
        s=x+"px";
        span.style.left=s;
	}

var letters_move = function() {
// console.log(' x = '+x);
var o = obj.innerHTML;
	if(animation_on)
		{
	    if(x<100) {
	        move();
	        }else{
	        	span.style.display='none';
	        	animation_on = false;
	        	x=0;
	            if(o.length<1) { return false; }
	         	}
		}else{
		    span = document.createElement('SPAN');
		    span.appendChild(document.createTextNode(o.slice(0,1)));
			span.style.top = obj.offsetTop;
		    span.style.left = obj.offsetLeft;
		    span.style.position = "absolute";
		    document.getElementsByTagName('body')[0].appendChild(span);
		    obj.innerHTML = o.slice(1,o.length-1);

		    animation_on = true;
		    // console.log(' - animation_on: '+animation_on );
		    move();
	    }
	 setTimeout("letters_move()",7);

}
setTimeout("letters_move()",7);
</script>
</body>
</html>

trikadin 27.01.2012 23:57

Keeper, сделайте запускаемым, штоле...

Keeper 28.01.2012 00:15

проверил в FF и Chrome, IE 9, Safari, Opera 11.60

trikadin 28.01.2012 10:46

Цитата:

Сообщение от Keeper
проверил в FF и Chrome, IE 9, Safari, Opera 11.60

Ты не понял) Вот здесь можно почитать о вставке запускаемого кода в свои сообщения.

art13 28.01.2012 14:26

Цитата:

Сообщение от trikadin (Сообщение 153548)
Ты не понял) Вот здесь можно почитать о вставке запускаемого кода в свои сообщения.

Ссылка на страничку получилась с тчк в конце)
Вот сюда, там описание как сделать код выкладываемый в сообщениях запускаемым. Т.е. появляется кнопа типа play.

art13 28.01.2012 14:43

Цитата:

Сообщение от Keeper (Сообщение 153504)
Aж понравилось )

Цитата:

Сообщение от trikadin (Сообщение 153508)
Keeper, сделайте запускаемым, штоле...

Я немного причесал.
<html>
<head>
</head>
<body>
<div id="t" style="position: absolute">простидижетатор</div>
<script>
 
var obj = document.getElementById("t");
var x = 0;
var span = {};
var animation_on = false;
 
function move()
{
    x=x+1;
    s=x+"px";
    span.style.left=s;
}
 
var letters_move = function()
{
    // console.log(' x = '+x);
    var o = obj.innerHTML;
    if(animation_on)
    {
	if(x<100) { move();}
	else
	{
	    span.style.display='none';
            animation_on = false;
            x=0;
            if(o.length<1) { return false;}
        }
    }
    else
    {
        span = document.createElement('SPAN');
        span.appendChild(document.createTextNode(o.slice(0,1)));
        span.style.top = obj.offsetTop;
        span.style.left = obj.offsetLeft;
        span.style.position = "absolute";
        document.getElementsByTagName('body')[0].appendChild(span);
        obj.innerHTML = o.slice(1,o.length-1);
 
        animation_on = true;
        // console.log(' - animation_on: '+animation_on );
        move();
    }
    setTimeout("letters_move()",7);
}
setTimeout("letters_move()",7);
</script>
</body>
</html>

Keeper 28.01.2012 15:09

Дак помог нет ? )


Часовой пояс GMT +3, время: 07:36.