You may call it Lightbox, or Greybox, or Thickbox, but it’s always the same effect.When you are on a page, and click on a photo or trig some event, a
Lightbox is an effect that fades the pagein the background to show you
new content in the foreground.
You may call it Lightbox, or Greybox, or Thickbox, but it’s always the same effect.
When you are on a page, and click on a photo or trig some event, a
Lightbox is an effect that fades the pagein the background to show you
new content in the foreground.
I mean this effect
In the upper example, when clicking on a photo the site fades to
black and shows the photo, in the lower one when clicking on “login”
the site fades to white and shows the login form.
There are tons of Lightbox scripts in the web, each one with its
unique features and limitations, but all require massive use of
Javascript or the installation of javascript frameworks.
In some cases, there are “lightweight” versions with “only” 40KB of Javascript.
This example does not want to compete with those scripts, but if you
are looking for a simple, 100% CSS, 0% javascript lightbox, this may
help you.
Features of this Lightbox:
100% CSS as said
You can insert any content in it (some scripts out there only allow images)
That’s all. Did you need something more? Think wisely…
Let’s start with the CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
.black_overlay{
display: none;
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
background-color: black;
z-index:1001;
-moz-opacity: 0.8;
opacity:.80;
filter: alpha(opacity=80);
}
.white_content {
display: none;
position: absolute;
top: 25%;
left: 25%;
width: 50%;
height: 50%;
padding: 16px;
border: 16px solid orange;
background-color: white;
z-index:1002;
overflow: auto;
}
|
August 22, 2007 by Emanuele Feronato
Filed Under Css • 289 Comments
google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);
You may call it Lightbox, or Greybox, or Thickbox, but it’s always the same effect.
When you are on a page, and click on a photo or trig some event, a
Lightbox is an effect that fades the pagein the background to show you
new content in the foreground.
I mean this effect
In the upper example, when clicking on a photo the site fades to
black and shows the photo, in the lower one when clicking on “login”
the site fades to white and shows the login form.
There are tons of Lightbox scripts in the web, each one with its
unique features and limitations, but all require massive use of
Javascript or the installation of javascript frameworks.
In some cases, there are “lightweight” versions with “only” 40KB of Javascript.
This example does not want to compete with those scripts, but if you
are looking for a simple, 100% CSS, 0% javascript lightbox, this may
help you.
Features of this Lightbox:
100% CSS as said
You can insert any content in it (some scripts out there only allow images)
That’s all. Did you need something more? Think wisely…
Let’s start with the CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
.black_overlay{
display: none;
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
background-color: black;
z-index:1001;
-moz-opacity: 0.8;
opacity:.80;
filter: alpha(opacity=80);
}
.white_content {
display: none;
position: absolute;
top: 25%;
left: 25%;
width: 50%;
height: 50%;
padding: 16px;
border: 16px solid orange;
background-color: white;
z-index:1002;
overflow: auto;
}
|
The black_overlay class is the layer that will make
the web page seem to fade. It’s a black 80% opaque background as long
and wide as the browser that will overlay the web page (look at the
z-index) and at the moment is not shown (look at the display).
The white content class is the layer with the
photo/login screen/whatever you want to appear in the Lightbox overlay.
It’s a white layer to be placed over the black_overlay layer (look at
the z-index, greater than the black_overlay one). The overflow allows
you to have a scrollable content.
In the html file, put this line just before the tag
1
|
<div id="light" class="white_content">Hi, I am an happy lightbox</div><div id="fade" class="black_overlay"></div>
|
Now, trig the action you want to open the Lightbox and insert this code:
1
|
document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block';
|
For example, in a link would be:
1
|
<a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'">Click me</a>
|
Remember to include in the lightbox the code to close it, for example
1
|
<a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">Hide me</a>
|
A complete example page could be
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>LIGHTBOX EXAMPLE</title>
<style>
.black_overlay{
display: none;
position: absolute;
top: 0%;
left: 0%;
width: 100%;
height: 100%;
background-color: black;
z-index:1001;
-moz-opacity: 0.8;
opacity:.80;
filter: alpha(opacity=80);
}
.white_content {
display: none;
position: absolute;
top: 25%;
left: 25%;
width: 50%;
height: 50%;
padding: 16px;
border: 16px solid orange;
background-color: white;
z-index:1002;
overflow: auto;
}
</style>
</head>
<body>
<p>This is the main content. To display a lightbox click <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='block';document.getElementById('fade').style.display='block'">here</a></p>
<div id="light" class="white_content">This is the lightbox content. <a href = "javascript:void(0)" onclick = "document.getElementById('light').style.display='none';document.getElementById('fade').style.display='none'">Close</a></div>
<div id="fade" class="black_overlay"></div>
</body>
</html>
|
That you can find up and running in this page.
In this example everything is static and preloaded, but you can
easily add some php/ajax code to make it more dynamic while keeping the
effect 100% CSS based.
|