Awesome Box Shading Skill with CSS only

In this tutorial, the author will guide you how to create awesome box shade with CSS only. This is a full-detailed instructions and a cool demo. Please go to the full post page for awesome web experiment.

Sampled by ©

Here is a fun technique to add shading to your web pages using only CSS with PNG images, without using JavaScript, Flash, server-side scripting, or Photoshop, and remain totally independent from colors and textures.

Try it demo. Download the source


Most shading techniques suffer the drawback of the core technology they use:

  1. Photoshop: images must be individually styled for each pattern combination
  2. Javascript: CPU intensive

The main issue with Photoshop techniques comes from the time spent creating images, and from the complexity of the code to keep tack of them. For each color/teture combination, 8 images (4 corners and 4 edges) are required.

One technique called “sliding door” reduces these elements to 6, but requires larger images:

A new approach

Our technique is based on the same basic idea used in 3D rendering engines which separate textures from shading. Here is an example showing the difference between shades + textures, and shades only:

The first step is to create the shade PND images. Simply use a mask to hide the box content (see the included files):

To optimize this technique, we can reduce the top and bottom elements’ width, and the left and right elements’ height to one pixel.

To use on a web page, we simply create a box element normally, wrap it in a “shade” container and add the required elements.

For the most complex case:

<div class='shade'>

 <div class='box'>
  <!-- content -->

 <div class='TL' />
 <div class='T' />
 <div class='TR' />
 <div class='L' />
 <div class='C' />
 <div class='R' />
 <div class='BL' />
 <div class='B' />
 <div class='BR' />


For fixed-with boxes, such as page containers, we only require 3 elements (top, center, and bottom):

<div class='shade'>

 <div class='box'>
  <!-- content -->

 <div class='T' />
 <div class='C' />
 <div class='B' />


Likewise, fixed-height boxed such as title containers only require 3 elements (left, center, and right):

<div class='shade'>

 <div class='box'>
  <!-- content -->

 <div class='L' />
 <div class='C' />
 <div class='R' />


You do not have to create the shade element, you can just apply the shade class to an existing one. The only purpose of the shade element is to serve as a wrapper and an anchor for absolute positioning.

Fore each shading element, we define a negative margin (here 10 px) to accommodate the shade and use a negative z-positioning to place the shade below the content of the box.

.shade {
.shade .TL, .shade .T, .shade .TR,
.shade .L, .shade .C, .shade .R,
.shade .BL, .shade .B, .shade .TB {
 z-index: -1;
.shade .TL {
 background: url(s/tl.png) no-repeat left top;

As always, the best way to fully understand a technique is to look at a demo, or to download the source. Next time, we will look at a Drupal theme which implements this technique.



Translate this page to English Translate this page to French Translate this page to Vietnamese

Recent articles
Migrate to Angular: why and how you should do it
The Possible Working Methods of Python Ideology
JavaScript Research Paper: 6 Writing Tips to Craft a Masterpiece
Learning How to Make Use of New Marketing Trends
5 Important Elements of an E-commerce Website
How To Create A Successful Prototype For Your PCB
WordPress Landing Page Conversion Essentials to Convert More
4 Development Hacks To Make Your Website Launch A Success
Why Data Recovery Software and Services are Important
Why Engineers Specializing in DevOps Are the Wave of the Future

Top view articles
Top 10 Beautiful Christmas Countdown Timers
65 Free JavaScript Photo Gallery Solutions
Best Free Linux Web Programming Editors
Top 50 Most Addictive and Popular Facebook mini games
Top 10 Free Web Chat box Plug-ins and Add-ons
Top 10 Best JavaScript eBooks that Beginners should Learn
50+ Beautiful Resources of HTML Form using CSS and JavaScript
The Ultimate JavaScript Tutorial in Web Design
HTML5 Web Workers Multithreading in JavaScript
Learn more about JavaScript Inheritance with Tiny JavaScript Example Codes

Free JavaScript Tutorials & Articles