Jump to content

Image Fade in JS - can you help?


Guest KristaGal

Recommended Posts

Guest KristaGal

Friend sent me these instructions from some site but I do not know what part goes where... what is in head, what is in body, what is in external files. Simply trying to get a logo to fade in upon a web homepage opening. Hope you can help, and much appreciated for your consideration :)

 

The photo is a straightforward image in a div. Each has an id:

 

<div id='photoholder'>

<img src='/images/ithaka.jpg' alt='Photo' id='thephoto' />

</div>

 

The 'loading…' image is set as the background to the photoholder div, and the photoholder is sized to match the photo.

 

#photoholder {

width:450px;

height:338px;

background:#fff url('/images/loading.gif') 50% 50% no-repeat;

}

#thephoto {

width:450px;

height:338px;

}

 

To prevent a cached photo from displaying before it has been faded in, when need to make the photo hidden. JavaScript is used to write a style rule so that users without JavaScript enabled will not have the photo permanently hidden:

 

document.write("<style type='text/css'>

#thephoto {visibility:hidden;} </style>");

 

Note that document.write does not work when XHTML is properly sent as application/xhtml+xml. You will either have to use HTML or serve your document as text/html.

 

Once everything on the page has loaded (crucially this includes images), an onload event is triggered, calling our initImage function:

 

window.onload = function() {initImage()}

 

The initImage function makes the photo completely tranpsarent by using the setOpacity function to set its opacity to zero. The photo can then be made visible and faded in using the fadeIn function:

 

function initImage() {

imageId = 'thephoto';

image = document.getElementById(imageId);

setOpacity(image, 0);

image.style.visibility = 'visible';

fadeIn(imageId,0);

}

 

The setOpacity function is passed an object and an opacity value. It then sets the opacity of the supplied object using four proprietary ways. It also prevents a flicker in Firefox caused when opacity is set to 100%, by setting the value to 99.999% instead.

 

function setOpacity(obj, opacity) {

opacity = (opacity == 100)?99.999:opacity;

 

// IE/Win

obj.style.filter = "alpha(opacity:"+opacity+")";

 

// Safari<1.2, Konqueror

obj.style.KHTMLOpacity = opacity/100;

 

// Older Mozilla and Firefox

obj.style.MozOpacity = opacity/100;

 

// Safari 1.2, newer Firefox and Mozilla, CSS3

obj.style.opacity = opacity/100;

}

 

The fadeIn function uses a Timeout to call itself every 100ms with an object Id and an opacity. The opacity is specified as a percentage and increased 10% at a time. The loop stops once the opacity reaches 100%:

 

function fadeIn(objId,opacity) {

if (document.getElementById) {

obj = document.getElementById(objId);

if (opacity <= 100) {

setOpacity(obj, opacity);

opacity += 10;

window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100);

}

}

}

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...