MooTools Gone Wild: Element Flashing

By  on  

If you're like me and lay awake in bed at night, you've flipped on the TV and seen the commercials: misguided, attention-starved college girls fueled by alcohol ruining their futures by flashing lame camera-men on Spring Break. Why do they do it? Attention, of course. That got me to thinking -- I should go download some what about when we want a user's attention to focus on a specific element on the page without using cheesy graphics? Armed with the latest MooTools trunk and a dream, I've implemented flash(), which you can use on any element on the page.


<div id="flash-me">
	<a href="javascript:;" id="flash-link">Click here</a> to make me flash!

The above is just some sample XHTML -- you can make your XHTML code look however you want.

The MooTools JavaScript

	flash: function(to,from,reps,prop,dur) {
		if(!reps) { reps = 1; }
		if(!prop) { prop = 'background-color'; }
		if(!dur) { dur = 250; }
		//create effect
		var effect = new Fx.Tween(this, {
				duration: dur,
				link: 'chain'
		//do it!
		for(x = 1; x <= reps; x++) {

You feed the flash function 2-5 parameters:

  • From: The color you want the element to flash to first.
  • To: The color you want the element to flash to next.
  • Reps: Number of times to repeat the flash.
  • Property: Property to flash. Background color works best.
  • Duration: The duration of the color change

Slick and simple!

The Usage

/* flash on click */
$('flash-link').addEvent('click', function () {

/* flash on ajax complete */
$('flash-link-ajax').addEvent('click', function () {
	//make the ajax call
	var req = new Request({
		method: 'get',
		url: 'element-flashing.php',
		data: { 'do' : '1' },
		onRequest: function() {  },
		onComplete: function(response) {

/* flash on scroll completion */
$('flash-link-scroll').addEvent('click', function() {
	var scroller = new Fx.Scroll(window, {
		onComplete: function() {

There are three examples above. The first makes an element flash right when it's clicked. The second flashes when an AJAX request is complete. The third scrolls down to an element on the page and flashes upon arrival.

Recent Features

  • By
    Creating Scrolling Parallax Effects with CSS

    Introduction For quite a long time now websites with the so called "parallax" effect have been really popular. In case you have not heard of this effect, it basically includes different layers of images that are moving in different directions or with different speed. This leads to a...

  • By
    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

  • By
    Create a Simple Slideshow Using MooTools

    One excellent way to add dynamism to any website is to implement a slideshow featuring images or sliding content. Of course there are numerous slideshow plugins available but many of them can be overkill if you want to do simple slideshow without controls or events.

  • By
    5 More HTML5 APIs You Didn&#8217;t Know Existed

    The HTML5 revolution has provided us some awesome JavaScript and HTML APIs.  Some are APIs we knew we've needed for years, others are cutting edge mobile and desktop helpers.  Regardless of API strength or purpose, anything to help us better do our job is a...


  1. Please stop. Forget the ability to do this and move along. We don’t need flashing… we finally got rid of flashing text in mark-up! :)

  2. @Marc: Close, but not the same thing.

  3. I think the flashing going on here is still easy on the eyes, I wouldn’t mind this.

    Checkout 1.2 got out of beta, oh yeah!

  4. Thanks for the great tutorial! I’m currently developing a new site and I opted for MooTools over jQuery and I have to admit, I was beginning to regret it. It seemed like there was so much more documentation for it than MooTools. Every day I was seeing 2 or 3 new tutorials for jQuery and none for Moo.

    You’re making things much easier than me, thanks! Keep up the great work!

  5. @Randy: Just like Journey said, “Don’t Stop Believin'”! jQuery has been adopted by the Designer community, which is fine. I’m a developer so I love the MooTools syntax and simplicity. I’m fighting for the Moo!

  6. Chris

    Might want to add a few flags to the flash to denote whether the element is flashing already or not, so that when it gets re-activated (eg: clicking the “click me” on the sample page several times very quickly) the element doesn’t go into some kind of epileptic fit.

  7. @Chris: Not a bad idea Chris.

  8. you might consider writing this as a class that an element can implement rather than just an implement, will be quite a bit more flexible that way.

  9. MrKistic

    Pretty good but I have one issue with it: Rod was the best rocker, but only between ’69 & ’74 ;)

  10. Great! Although…
    I already packaged it into a class – which is sadly not yet MooTools 1.2 based but you can check it out here: MooTools Pulsate class.

    Interested in a 1.2 version? :)

  11. Doesn’t work in mootools 1.1.

    Yeh, I now see most of your articles are written for 1.2, but it took me a good 15 mins before I worked out this wasn’t compatible for 1.1 – might be worth stating “for 1.2” somewhere or in the title?

    Good tutorial, though.

  12. Hey man, just found your blog, fellow Mootools developer here (among other things). Some great inspiration on your site, I will be coming back here. I implemented your tutorial and I’m using a similar method minus one parameter. Basically I do getStyle(‘background-color’) and just flash to that, so you don’t have to know the item’s original background color to flash it.

  13. If I’m not mistaken, the code above will cause some sort of memory leak? Because every time you click on the link, a new Fx.Tween object is created.

  14. Is there a way that i could remove the effect while its still flashing ? What would i have to add to the code so that i could disable the effect whenever i wanted? Im new to mootools but am already loving it , so please help :)

  15. Gui

    Any idea how to add eg border-color to flash as well…

  16. kkrishieee

    Hi david,
    As im new to Mootools, the above example is very useful for me.flashing the background. I have implemented the same thing in my project. The problem im facing is how to stop that flashing.
    For Example:
    1) One side of the page flashes for 5 seconds.
    2) After 5 seconds the other side page has to flash for 5seconds.
    3) vice-versa.

  17. kkrishieee

    Hi david,
    As im new to Mootools, the above example is very useful for me.flashing the background. I have implemented the same thing in my project. The problem im facing is how to stop that flashing.
    For Example:
    1) One side of the page flashes for 5 seconds.
    2) After 5 seconds the other side page has to flash for 5seconds.
    3) vice-versa.

    Im picking my hair since long time.please can you help me out.
    Thanks in advance.

  18. very interesting blog

  19. Jens Lehmann

    Sehr interessantes thema! besucht meine webseite

  20. Anees Iqbal

    David, Your comment parsing plugin sucks, so added some extra spaces.

    • Anees Iqbal

      Okay, I swear I added javascript: in the href attribute, but it removed it. (facepalm)

    • Anees Iqbal

      and it also added rel="nofollow" to it. Man, there’s a lot of broken things around here. :D

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