SpiffyJr's Blogaroo

Happenings of the man known as SpiffyJr

  • Home
  • About
    • Inspiration
    • Resume
  • Projects
    • Blitzaroo
    • phpRaider
    • Zend Calendar
  • Docs
    • Blitzaroo API
    • SpiffyCalendar Docs
    • SpiffyDb Docs
  • Downloads
  • Technologies
    • Doctrine ORM
    • Dojo
    • PHP
    • Zend Framework
  • Other
    • License
Twitter RSS

Creating a fadeOut loader with Dojo

Posted on March 3, 2010 by SpiffyJr
4 commentsLeave a comment
Dojo Toolkit

Image via Wikipedia

Intro

If you’re building a large site and utilizing Dojo you can get pages that are crammed full of widgets, layout containers, dialogs and more. All these useful features give your site a clean and very user-friendly experience. One side-effect, however, is that the HTML/CSS is loaded and then Dojo begins parsing which can cause your page to jump around while each element is rendered. I found this highly annoying so I scoured the web (<3 Google!) and managed to find a solution. I utilize a #loader div which covers the entire screen and then fade it out using dojo.addOnLoad(). This is extremely simple to implement and should only take a few minutes.

Live Demonstration

Take a peak at the live demonstration of the basic loader (or the fancy loader) to see where we’re headed. If you’re interested in how I got there keep on reading!

The HTML

The HTML consists of a single div located directly under the <body> tag of your page and another for content that will be parsed by Dojo.

<div id="loader"></div>
<div id="content">I AM SOME CONTENT!</div>

The CSS

CSS stretches the div to the full viewport of the page. I color the #loader the same color as the background of the page I’m loading to give it a nice and smooth transition.

<style type="text/css">
	body {
		background: #fff;
	}

	#content {
		text-align: center;
		width: 100%;
	}

	#loader {
		background: #fff;
		height: 100%;
		left: 0;
		margin: 0;
		padding: 0;
		position: absolute;
		top: 0;
		vertical-align: middle;
		width: 100%;
		z-index: 999;
	}
</style>

The Script

Even the Dojo code is easy! We tell dojo to manually parse the content div and then we add a fadeOut animation to the #loader div and onComplete set the loader display to none.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/dojo/1.4.1/dojo/dojo.xd.js"></script>
<script type="text/javascript">
   	//CDATA[
	dojo.require("dojo.parser");
	dojo.addOnLoad(_initLoader);

	function _initLoader() {
		var content = dojo.byId("content");
		var loader = dojo.byId("loader");

		// Parse the content manually
		dojo.parser.parse(content);

		// Fade the loader div out
		dojo.fadeOut({
			node: loader,
			duration: 250,
			onEnd: function() {
				loader.style.display = "none";
			}
		}).play(250);
	}
    //]]>
</script>

Pump it up!

So, we created a loader, and it’s pretty nifty but let’s pump it up a bit by adding a “Loading…” message a la Google’s GMail. First, we need to modify the #loader div to include a #loaderInner which will house our loading message like so:

<div id="loader"><div id="loaderInner">Loading...</div></div>
<div id="content">I AM SOME CONTENT!</div>

Next, we tweak the CSS a bit to colorize the loading message, throw in some padding, and give it a bit of flare.

	body {
		background: #fff;
	}

	#content {
		text-align: center;
		width: 100%;
	}

	#loader {
		background: #fff;
		height: 100%;
		left: 0;
		margin: 0;
		padding: 0;
		position: absolute;
		top: 0;
		vertical-align: middle;
		width: 100%;
		z-index: 999;
	}

	#loaderInner {
		-webkit-box-shadow: -1px 1px 5px #888;
		background-color: #FFFFCB;
		color: #c99800;
		display: table;
		font-size: 16px;
		padding: 5px 13px;
		text-align: center;
	}
</style>

That’s one sexy loader if I do say so myself – enjoy it!

Reblog this post [with Zemanta]
GD Star Rating
loading...
Creating a fadeOut loader with Dojo, 7.3 out of 10 based on 6 ratings
Categories: Dojo, Random, Technologies | Tags: Cascading Style Sheets, CSS, Data Formats, Google, HTML, HTML element, JavaScript, Style sheet

About SpiffyJr

View all posts by SpiffyJr→
Notice: This work is licensed under a BY-NC-SA. Permalink: Creating a fadeOut loader with Dojo
Blitzaroo signups
Zend Calendar proposal

4 Responses to “Creating a fadeOut loader with Dojo”

  1. Dojo marketing and increasing the community | SpiffyJr's Blogaroo says:
    March 3, 2010 at 11:16 am

    [...] Creating a fadeOut loader with Dojo. GD Star Ratingloading…Dojo marketing and increasing the community10.0103 Tags: Blog, Cascading Style Sheets, Dojo Toolkit, HTML, JavaScript, JQuery, Languages, Marketing, Programming, Twitter Creating a Twitter-esque login box with Dojo Twitter integration! [...]

  2. Tom Trenka says:
    March 6, 2010 at 10:37 am

    Nice article! You can see something similar, where you can set up a nice loader div in a dijit.layout.ContentPane, with the upcoming revised Dojo API doc tool at http://api-staging.dojotoolkit.org/ .

    Keep up the good work!

    GD Star Rating
    loading...
  3. Kyle Hayes says:
    March 9, 2010 at 9:36 am

    Excellent writeup. What do you think of the idea of having a similar system but on a more modular level, where any widget that was going to have dynamic content would get it’s own fading screen. That way content that was already embedded on the page would be visible as the user was loading the page, but other dynamic elements would show their loading screens until the widget was fully loaded.

    GD Star Rating
    loading...
  4. Kyle Spraggs says:
    March 9, 2010 at 10:11 am

    I had thought about something like that but haven’t really had the need to implement it. Also, I would probably be limited on my current knowledge of Dojo.

    GD Star Rating
    loading...

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

*

*


question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • Recent Posts

    • Keep your Git fork clean
    • Get started with Zend Framework 2 modules!
    • More Doctrine 2 and Zend Framework integration goodies!
    • Super sexy URLs with ZF and the joy of controller plugins!
    • Formatting your API to work with dojox.data.JsonRestStore (#dojo)
  • Categories

    • Other
      • Random
    • Projects
      • Blitzaroo
      • phpRaider
      • SpiffyDb
      • View Helpers
      • Zend Calendar
    • SpiffyJr
    • Technologies
      • Dojo
      • PHP
      • Zend Framework
  • Tag Cloud

      Ajax Algorithm api Blitzaroo Blog BSD licenses calendar Cascading Style Sheets CSS database Data Formats Dojo Dojo Toolkit event Framework game Google HTML HTML element JavaScript JQuery json Languages mapper Marketing mmorpg model php Programming Projects Scripts Source code Style sheet Style Sheets Twitter Website zend Zend Framework
  • Archives

    • December 2011
    • November 2011
    • July 2011
    • April 2011
    • March 2011
    • December 2010
    • November 2010
    • October 2010
    • March 2010
    • February 2010
    • November 2009
    • October 2009
    • September 2009
© SpiffyJr's Blogaroo. Proudly Powered by WordPress | Nest Theme by YChong