• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 729
  • Last Modified:

How to animate text with timer changing position and color using JQUERY

Hello,

Don't be afraid if  the post is long, I just gives example which runs but doesn't
satisfy me.

My question is:

WHICH IS THE SOLUTION TO MOVE A TEXT ON THE SCREEN CHANGING POSITION AND COLOR
WITH TIMING?

In the end of the post I give the code I've managed to do but which seems very complicated.

Does some one know an easier solution, please.

Thanks, Best regards



My purpose is to do an animation.
1/The message must be at the top left with a background color have fadeIn fadeOut
2/moves top right with another color yellow
3/in the end it must be bottom right red.

First I've tryed this

$("#msg").append("hello").fadeOut(1000).fadeIn(1000).css("background-color","yellow").css({
        position: "absolute",
        top:  "200px",
        left: "400px"
    }).show();

Open in new window


but css color wait not for fadeIn fadeOut so I've found a solution
with queue

$("#msg").append("hello I want to go!").css("background-color","red").fadeOut(1000).fadeIn(1000).queue( function() 
	{ 
	$(this).css("background-color","green");
	$(this).dequeue();
	})
	.queue( function() 
	{ 
	$(this).css({
        	position: "absolute",
        	top:  "0px",
        	left: "400px"
   		 }).show();
	$(this).dequeue();
	});

Open in new window

in the end after struggling reading in books and serching on the internet I found a solution, BUT

it is very difficult to code using it.

I wonder if some one know a better solution easy to code to do this


my code is (which runs but very uneasy to use)

//*********************************************************************************
<!DOCTYPE html>
<html>
  <head>

    <title>ANIMATION with timer: a solution very difficult to apply</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> 
 </head>
  <body>

<span id="msg">my message: </span>
 
    <script>
      $(function() {
		var cpt=0;
		var time_delta=2000;
	  	var int1=setInterval( function() 
		{
		cpt++;
		if (cpt==1)
			{
			$("#msg").append(time_delta);
						
			$("#msg").html("hello I am top left!").css("background-color","red").fadeOut(500).fadeIn(500).queue( function() 
				{ 
				$(this).html("hello I am top right!").css({
					position: "absolute",
					top:  "0px",
					left: "400px"
				}).css("background-color","green").fadeOut(500).fadeIn(500);
				$(this).dequeue();
				});
			}
		else if  (cpt==2)
			{
			$("#msg").html("hello I am bottom right!").css({
					position: "absolute",
					top:  "400px",
					left: "400px"
				}).css("background-color","yellow").fadeOut(500).fadeIn(500).queue( function() 
				{ 
				$(this).html("hello I am bottom left!").css({
					position: "absolute",
					top:  "400px",
					left: "0px"
				}).css("background-color","red").fadeOut(500).fadeIn(500);
				$(this).dequeue();
				});
			}
		else
			{
			$("#msg").append("finished");
			clearInterval(int1);
			}
		},time_delta);
			
		});
 	   
    </script>
  </body>
</html>

Open in new window

//*********************************************************************************
0
DavidInLove
Asked:
DavidInLove
  • 2
1 Solution
 
Tom BeckCommented:
How about this?
<!DOCTYPE html>
<html>
  <head>

    <title>ANIMATION with timer: a solution very difficult to apply</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script> 
 </head>
  <body>

<span id="msg" style="position:absolute">my message: </span>
 
    <script>
      $(function() {
		var cpt=0;
		var positions = [ 
			{top: '0',left:'0', message: 'hello I am top left!', color: 'red'},
			{top: '0',left:'400px', message: 'hello I am top right!', color: 'green'},
			{top: '400px',left:'400px', message: 'hello I am bottom right!', color: 'yellow'},
			{top: '400px',left:'0', message: 'hello I am bottom left!', color: 'red'}
		];
		var time_delta=2000;
	  	var int1=setInterval( function() {
			$("#msg").html(positions[cpt].message).css({
				'background-color': positions[cpt].color,
				'top': positions[cpt].top,
				'left': positions[cpt].left
			}).fadeOut(500).fadeIn(500);
			cpt++;
			if (cpt === positions.length) {clearInterval(int1);}
		},time_delta);
			
		});
 	   
    </script>
  </body>
</html>

Open in new window

0
 
DavidInLoveAuthor Commented:
Thank you a lot Tom for this beautifull solution!
David
0
 
Tom BeckCommented:
You're welcome. Thanks for the points.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now