Treehouse

jQuery Random Link Color Animations

By on  

We all know that we can set a link's :hover color, but what if we want to add a bit more dynamism and flair? jQuery allows you to not only animate to a specified color, but also allows you to animate to a random color.

The jQuery JavaScript

$(document).ready(function() {
	var randomLinks = $('a.random-color');
	var original = randomLinks.css('color');
	randomLinks.hover(function() { //mouseover
		var col = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';
		$(this).animate({
			'color': col,
			'paddingLeft': '20px'
		},1000);
	},function() { //mouseout
		$(this).animate({
			'color': original,
			'paddingLeft': '0'
		},500);
	});
});

For the color animation portion, you'll need an extra Color Animations jQuery plugin. The padding nudge is another neat effect. This effect isn't for everyone, but it can add another subtle effect to your jQuery-enabled website.

ydkjs-1.png

Recent Features

  • An Interview with Eric Meyer

    Your early CSS books were instrumental in pushing my love for front end technologies. What was it about CSS that you fell in love with and drove you to write about it? At first blush, it was the simplicity of it as compared to the table-and-spacer...

  • Introducing MooTools Templated

    One major problem with creating UI components with the MooTools JavaScript framework is that there isn't a great way of allowing customization of template and ease of node creation. As of today, there are two ways of creating: new Element Madness The first way to create UI-driven...

Incredible Demos

  • Duplicate DeSandro’s CSS Effect

    I recently stumbled upon David DeSandro's website when I saw a tweet stating that someone had stolen/hotlinked his website design and code, and he decided to do the only logical thing to retaliate:  use some simple JavaScript goodness to inject unicorns into their page....

  • CSS Vertical Centering

    Front-end developing is beautiful, and it's getting prettier by the day. Nowadays we got so many concepts, methodologies, good practices and whatnot to make our work stand out from the rest. Javascript (along with its countless third party libraries) and CSS have grown so big, helping...

Discussion

  1. Nicely done David! But I think you should do 256 since – i believe – (Math.floor(Math.random() * 255)) will never return 255, just 0- 254.

  2. Nice idea David!

    The animation is a little slow though…

  3. Cool idea. I think that there should be some constraints on the colours though as sometimes the link turned off-white.

    var col = ‘rgb(‘ + (Math.floor(Math.random() * 51)) + ‘,’ + (Math.floor(Math.random() * 51)) + ‘,’ + (Math.floor(Math.random() * 153)) + 51′)';

    for example will always (I think) be a colour between #000033 and #3333CC

  4. @Benjamin Sterling: Good point. Updated.

    @James: Speed can be adjusted, so no worries there.

    @Clinton Montague: This is a great consideration and one I looked at when developing. I decided to leave it out because it’s a “per site” issue.

  5. Hi David.

    Its is simply superb.

  6. John Smith

    Great effect David! Thanks for sharing it with us.

    Does anyone know of a way to make this compatible with IE 7 by chance?

  7. @John Smith: Works for me!

  8. John Smith

    Cheers David – figured out my issue – I just had a conflicting css definition that I somehow glazed over.

  9. tuft

    hi, just suggestion: call stop() on element before starting new animation:

    $(this).stop().animate({ …

    it will eliminate dancing menu item after multiple mouseover/mouseout…

  10. Hi David, sorry this is such a backward question but can you tell me how I can use this code with my html. I don’t mean within my document, but referencing, say, a js file on my site to get this effect to take place?

    Thanks a lot.

  11. theorie

    hello,

    i’m wondering how it would be possible to limit the number of colors to a defined list. if i only want to have 7 set colors, how would i go about defining those 7 colors?

    thanks in advance!

  12. Well, this is just great!

    I’m trying to figure out how to modify this so that every link on a page, when loaded, has a random background color. With a little padding on each link, it will look kind of lego-ish or block pixel-y or something, which would be rad. Any ideas?

  13. Hardy

    Hi there,
    unfortunately it does not work in combination with a slide out panel (based on jQ) in FF and Chrome. Does anybody know about that and is there anything I can do to make it work?????
    Thanks in advance.

    Hardy
    Berlin, Germany

  14. Victor Stroe

    nice code man! thx for sharing

    @theorie

    you can use this:

    colors =
    [
    “#37C78F”,
    “#C9DE55″,
    “#FF4D38″,
    “#CC2249″,
    “#380C2A”
    ]
    var col = colors[Math.floor(Math.random()*colors.length)];

  15. naty

    hi, i want to create a random spinning roulette or maybe something like a slot machine code, sp that the user will press “go” and the different options (which i’ll enter) will begin to spin and then stop on a random one. any help ?

  16. Nice Work. But If we hover it fast over all the links. It is not working in the way that it pretend to be.

  17. Thank you.. Great stuff..

  18. […] Random Link Color Change an element’s color randomly when you hover it. […]

  19. […] jQuery Rasgele Link Renkli Animasyonlar — Demo | Detaylar In bu yazının yazarı için nasıl göstereceğim oluşturmak menüsünü kullanarak rastgele renkler eklemek için biraz daha fazla dinamizm ve yetenek olarak jQuery sağlar sadece animasyon için belirli bir renk ama aynı zamanda olanak sağlar animasyon rastgele bir renk. […]

  20. […] jQuery Random Link Color Animations — Demo | Details  […]

  21. […] jQuery Random Link Color Animations — Demo | DetailsIn this tutorial author will show how to create menu using random colors to add a bit more dynamism and flair as jQuery allows you to not only animate to a specified color, but also allows you to animate to a random color. […]

  22. […] jQuery Random Link Color Animations […]

  23. Nice Algorithm! I will use it on our page.

  24. […] jQuery Random Link Color Animations — Demo | Details In this tutorial author will show how to create menu using random colors to add a bit more dynamism and flair as jQuery allows you to not only animate to a specified color, but also allows you to animate to a random color. […]

  25. […] Animación con color aleatorio en enlaces (jQuery) […]

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!