Visit the javapronews Directory
Blogs
Blogger, Blogosphere, Web 2.0...
Design Agencies
Professional, Design, Job...
Education
Communicate, Help, Learn...
Forums
Search, Learn, Communicate...
Java Developers
Skills, Build, Distribute...
Java Tutorials
books, help, Learning...
Javascript Tutorials
Help, Learn, Read...
News
Technology, Business, Web...

Submit your site for FREE

JavaScript Custom LightBox


Mads Kristensen By: Mads Kristensen

A few people have asked me how to implement the div popup with a LightBox effect, like the one used when you click the Filter by APML link in the top right corner of this page. It’s actually very easy and it’s 100% JavaScript.

First, we need to add the semi-transparent div to lie on top of the entire page. This is done like so:

var width = document.documentElement.clientWidth + document.documentElement.scrollLeft;

var layer = document.createElement(’div’);
layer.style.zIndex = 2;
layer.id = ‘layer’;
layer.style.position = ‘absolute’;
layer.style.top = ‘0px’;
layer.style.left = ‘0px’;
layer.style.height = document.documentElement.scrollHeight + ‘px’;
layer.style.width = width + ‘px’;
layer.style.backgroundColor = ‘black’;
layer.style.opacity = ‘.6′;
layer.style.filter += (”progid:DXImageTransform.Microsoft.Alpha(opacity=60)”);
document.body.appendChild(layer);

Next we add a div in the middle of the page on top of the semi-transparent layer.

var div = document.createElement(’div’);
div.style.zIndex = 3;
div.id = ‘box’;
div.style.position = (navigator.userAgent.indexOf(’MSIE 6′) > -1) ? ‘absolute’ : ‘fixed’;
div.style.top = ‘200px’;
div.style.left = (width / 2) - (400 / 2) + ‘px’;
div.style.height = ‘50px’;
div.style.width = ‘400px’;
div.style.backgroundColor = ‘white’;
div.style.border = ‘2px solid silver’;
div.style.padding = ‘20px’;
document.body.appendChild(div);

And finally we put some text and a link that closes the popup when clicked:

var p = document.createElement(’p');
p.innerHTML = ‘Some text’;
div.appendChild(p);

var a = document.createElement(’a');
a.innerHTML = ‘Close window’;
a.href = ‘javascript:void(0)’;
a.onclick = function()
{
document.body.removeChild(document.getElementById(’layer’));
document.body.removeChild(document.getElementById(’box’));
};

div.appendChild(a);

I’ve tested this in Firefox 2+, Internet Explorer 6+, Safari 3 and Opera 9.23+ and it works in all of them. Here is an example HTML page that uses this method. It’s very simple to copy and modify.

Comments

About The Author

Mads Kristensen currently works as a Senior Developer at Traceworks located in Copenhagen, Denmark. Mads graduated from Copenhagen Technical Academy with a multimedia degree in 2003, but has been a professional developer since 2000. His main focus is on ASP.NET but is responsible for Winforms, Windows- and web services in his daily work as well. A true .NET developer with great passion for the simple solution. http://www.madskristensen.dk/

Leave a Reply