Submit Your Article
Home Articles News Tutorials Videos Add An Article
Topics: Design Photoshop Programming PHP CSS Java Database Web Development Javascript Ajax
– Close + Open

Find Out More About DevWebPro!

Sign up for the newsletter


» Terms & Conditions

Welcome to the New DevWebPro!

DevWebPro Includes:
  Hundreds Of Tutorials   Developer News
  Unique Gadget Videos   Tons of Topics to Discuss
  Expert Advice   We Will Publish Your Articles

JavaScript Custom LightBox

By: Mads Kristensen
Tuesday, July 22nd, 2008
Text: Decrease Font Size Increase Font Size | Print Print Article | Share: Delicious Digg StumbleUpon Post to Twitter Post to Facebook

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

Topics: ,

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/
DevWebPro is an iEntry Network ® publication - © 1998-2010 All Rights Reserved