Decorative CSS Gallery – Part 2 148
Long ago I wrote a tutorial on how to make decorative image galleries using an extra <span> tag. It requires jQuery to append the span tag which isn't quite user friendly. Today I'm going to share a better method without using Javascript. The same result can be achieved by using :before or :after pseudo element. The :before element is one of the commonly under used elements, but it is quite useful for adding additional elements or content. Learn it now and start using it.
HTML
Below is a sample image gallery markup in a <ul> list.
<ul class="gallery clip">
<li>
<img src="http://webdesignerwall.com/wp-content/uploads/2012/09/sample-1.jpg" alt="image">
</li>
<li>
<img src="http://webdesignerwall.com/wp-content/uploads/2012/09/sample-2.jpg" alt="image">
</li>
<li>
<img src="http://webdesignerwall.com/wp-content/uploads/2012/09/sample-1.jpg" alt="image">
</li>
</ul>
CSS
Below is the base style for the .gallery. The key property you have to add is relative position on the .gallery a element.
.gallery {
margin: 0 0 25px;
text-align: center;
}
.gallery li {
display: inline-block;
margin: 5px;
list-style: none;
}
.gallery a {
position: relative;
display: inline-block;
}
:before element
Now I'm going to specify a 30 x 60px container with the paper clip background image to the a:before element. Note that I leave the content property empty in the CSS rule. Without the empty content property, the container will not appear.
.clip a:before {
position: absolute;
content: ' ';
top: -5px;
left: -4px;
width: 30px;
height: 60px;
background: url(http://webdesignerwall.com/wp-content/uploads/2012/09/paper-clip.png) no-repeat;
}
Art Frame
You can use this trick to add any overlay graphic element on top. In this example, I just replaced the background image to an art frame graphic and adjusted the dimension and position.
.frame a:before {
position: absolute;
content: ' ';
top: -22px;
left: -23px;
width: 216px;
height: 166px;
background: url(http://webdesignerwall.com/wp-content/uploads/2012/09/frame.png) no-repeat;
}
HTML5 Gallery
Let's create a more advanced gallery using HTML5 markups. In the example below, I have a <figure> tag wrapped around the image and a <figcaption> for image caption.
<ul class="gallery tape">
<li>
<figure>
<img src="http://webdesignerwall.com/wp-content/uploads/2012/09/sample-4.jpg" alt="image">
<figcaption>Image Caption</figcaption>
</figure>
</li>
<li>
<figure>
<img src="http://webdesignerwall.com/wp-content/uploads/2012/09/sample-5.jpg" alt="image">
<figcaption>Image Caption</figcaption>
</figure>
</li>
<li>
<figure> <img src="http://webdesignerwall.com/wp-content/uploads/2012/09/sample-6.jpg" alt="image">
<figcaption>Image Caption</figcaption>
</figure>
</li>
</ul>
CSS
In the CSS, I added two :before elements: one on the <figure> element and another one on the <li> element. The overlay.png (mask image) is applied to the figure:before element and the tape graphic is applied on the a:before element.
.tape li {
width: 170px;
padding: 5px;
margin: 15px 10px;
border: solid 1px #cac09f;
background: #fdf8e4;
text-align: center;
box-shadow: inset 0 1px rgba(255,255,255,.8), 0 1px 2px rgba(0,0,0,.2);
}
.tape figure {
position: relative;
margin: 0;
}
.tape a:before {
position: absolute;
content: ' ';
top: 0;
left: 0;
width: 100%;
height: 100%;
background: url(http://webdesignerwall.com/wp-content/uploads/2012/09/overlay.png) no-repeat;
}
.tape figcaption {
font: 100%/120% Handlee, Arial, Helvetica, sans-serif;
color: #787568;
}
.tape a:before {
position: absolute;
z-index: 2;
content: ' ';
top: -12px;
left: 50%;
width: 115px;
height: 32px;
margin-left: -57px;
background: url(http://webdesignerwall.com/wp-content/uploads/2012/09/tape.png) no-repeat;
}
CSS3 Transform
In this gallery, I added a cork pattern background on the gallery and use transform property to rotate the images.
.transform {
background: url(http://webdesignerwall.com/wp-content/uploads/2012/09/cork-bg.png);
padding: 25px;
border-radius: 10px;
box-shadow: inset 0 1px 5px rgba(0,0,0,.4);
}
.transform li {
border: none;
}
Nth-of-Type
To make the image rotation look randomized and more natural, I applied a different rotation angle using nth-of-type.
.transform li:nth-of-type(4n+1) {
-webkit-transform: rotate(2deg);
}
.transform li:nth-of-type(2n) {
-webkit-transform: rotate(-1deg);
}
.transform li:nth-of-type(4n+3) {
-webkit-transform: rotate(2deg);
}
Update:
I've updated the gallery demo and CSS so now the images are linked. Now the :before element is added to the tag.
Very nice this will be very useful ! Thanks for sharing
I have created some tools for web developers that apply styles of this kind to images. My experience says that in order to create styles and effects like that, you need 3 things: a) CSS3, b) Javascript (jQuery) and c) decorative/assistant images.
The best case would be to use only CSS3 but at the moment the usage of the other two is necessary if you want to create impressive styles.
I can still remember part one. The first thing that came to my mind was to ad transform:scale(1.02); on hover. Great tutorial!
This is a good article and I have been using :before and :after a lot in my design. The only concern using it that it is compatible IE8+ so you need to have some fallback if you have IE7 users.
It is a very nice gallery for me! As a web designer, I want a gallery like that..
The only bit that doesn’t make sense, is why you’ve used masking tape and not pins to stick pictures to a cork board! ;-)
Good little demo.
Nice.The information you shared is very helpful for designers i am also a designers & your information will help me a lot.
Thanks once again.
Cool tips, Thanks for sharing!
wow , nice tips for web designig..
thanks for sharing..
Choice, I really like the sticky tape idea. Thanks for sharing!
This is a wonderful tutorial. I hope to incorporate this on my blog!
I remember the original tutorial and have been using it. Thanks for the updated and improved method. I love the designs on your site. Kind regards Don
Your website says a big mess on the game, and you can reach the number in between, and consumers get a deal with another on your website. It is very affirmable on the number of a website on your own, but no choice e’er beat.
A web designer has professed, the perception of most of what consumers turn to and implementation of your entire home, which they are perceived to focus. They are also in how to improve various aspects of your website to make sales explode just qualified.
very nice, thank you
Great !
nice one. lovely desinged !
Wow, Thees looks totally great.
I have been improving our gallery lately, but I can see, that I will improve some more soon using some of these ;)
Thanks for sharing!
Andrea
Very helpful.. Thanks..
Very nice, some interesting ideas to take away from those.
Thanks for the detailed and helpful tutorial. This decorative CSS Gallery looks stunning and eye catchy.