Having an effective pricing table can help you a lot to increase the conversion rate for your product sales page. It’s very important to make things clear from the beginning because this way you’ll help your visitors to take the best decision for choosing the plan that suits them.
The pricing table’s design also plays an important role here. So, in today’s article you’ll learn how to create a nice and effective pricing table using CSS3.

Before going further, in case you missed it, you may want to check also my previous CSS3 pricing table design.
The HTML
Below you can find a markup excerpt. As usual, there is nothing complicated here, just clean and minimal markup.
<div id="pricing-table">
<div class="plan plan1">
<div class="header">Enterprise</div>
<div class="price">$59</div>
<div class="monthly">per month</div>
<ul>
<li><b>10GB</b> Disk Space</li>
<li><b>100GB</b> Monthly Bandwidth</li>
<li><b>20</b> Email Accounts</li>
<li><b>Unlimited</b> subdomains</li>
</ul>
<a class="signup" href="">Sign up</a>
</div>
<div class="plan plan2 popular-plan">
...
</div>
<div class="plan plan3">
...
</div>
<div class="plan plan4">
...
</div>
</div>
Starting structure

The snippet below contains the initial styles for our pricing table layout:
#pricing-table {
margin: 100px auto;
text-align: center;
width: 928px; /* total computed width */
zoom: 1;
}
#pricing-table:before, #pricing-table:after {
content: "";
display: table
}
#pricing-table:after {
clear: both
}
#pricing-table .plan {
font: 13px 'Lucida Sans', 'trebuchet MS', Arial, Helvetica;
background: #fff;
border: 1px solid #ddd;
color: #333;
padding: 20px;
width: 180px;
float: left;
_display: inline; /* IE6 double margin fix */
position: relative;
margin: 0 5px;
box-shadow: 0 2px 2px -1px rgba(0,0,0,.3);
}
Slick bottom shadow

To add some depth to our pricing plans, we’ll add a cool shadow for each.
#pricing-table .plan:after {
z-index: -1;
position: absolute;
content: "";
bottom: 10px;
right: 4px;
width: 80%;
top: 80%;
box-shadow: 0 12px 5px rgba(0, 0, 0, .3);
transform: rotate(3deg);
}
Highlighting a preferred plan

The plans are already relative positioned and that’s why we can elevate the .popular-plan block using a negative top value.
#pricing-table .popular-plan {
top: -20px;
padding: 40px 20px;
}
The headers design

For the jagged effect, you can use an encoded white triangle image and repeat it above the bottom borders.
#pricing-table .header {
position: relative;
font-size: 20px;
font-weight: normal;
text-transform: uppercase;
padding: 40px;
margin: -20px -20px 20px -20px;
border-bottom: 8px solid;
background-color: #eee;
background-image: linear-gradient(#fff, #eee);
}
#pricing-table .header:after {
position: absolute;
bottom: -8px; left: 0;
height: 3px; width: 100%;
content: '';
background-image: url(data:image/png;base64,iVBO[...]);
}
#pricing-table .popular-plan .header {
margin-top: -40px;
padding-top: 60px;
}
#pricing-table .plan1 .header {
border-bottom-color: #B3E03F;
}
#pricing-table .plan2 .header {
border-bottom-color: #7BD553;
}
#pricing-table .plan3 .header {
border-bottom-color: #3AD5A0;
}
#pricing-table .plan4 .header {
border-bottom-color: #45D0DA;
}
Price, feats and sign up styles

With these last styles, our pricing table is ready for action.
#pricing-table .price{
font-size: 45px;
}
#pricing-table .monthly{
font-size: 13px;
margin-bottom: 20px;
text-transform: uppercase;
color: #999;
}
/* --------------- */
#pricing-table ul {
margin: 20px 0;
padding: 0;
list-style: none;
}
#pricing-table li {
padding: 10px 0;
}
/* --------------- */
#pricing-table .signup {
position: relative;
padding: 10px 20px;
color: #fff;
font: bold 14px Arial, Helvetica;
text-transform: uppercase;
text-decoration: none;
display: inline-block;
background-color: #72ce3f;
border-radius: 3px;
text-shadow: 0 -1px 0 rgba(0,0,0,.15);
opacity: .9;
}
#pricing-table .signup:hover {
opacity: 1;
}
#pricing-table .signup:active {
box-shadow: 0 2px 2px rgba(0,0,0,.3) inset;
}
#pricing-table .plan1 .signup{
background: #B3E03F;
}
#pricing-table .plan2 .signup{
background: #7BD553;
}
#pricing-table .plan3 .signup{
background: #3AD5A0;
}
#pricing-table .plan4 .signup{
background: #45D0DA;
}
That’s all!
I hope you liked this tutorial. It’s simple, easy to use, it degrades gracefully for older browsers and it looks nice.
Thanks for reading and please don’t hesitate to share your thoughts with us!
Amazing CSS effects :) I always find some snippet of code to reuse in your articles. Thank you!
Typically, pricing tables are designed with the most inexpensive plan on the left. Why did you do the opposite of convention?
Let’s just say I followed some pricing table guidelines…
So, why place them in descending order? Because it’s easier for users to move down on pricing than it is for them to move up. Start them off at the high-end and they won’t be able to ignore your high pricing plans.
Sounds pretty fair if you ask me.
Your users are used to seeing the prices scale from left to right, and upon seeing the far left cost higher than they’re comfortable with, they’re less likely to read the rest of your site. Users who know they will need the more robust/enterprise solutions will continue to scan to the right. No reason to scare people off early under the assumption that this way they “won’t miss it.” They didn’t want it to begin with.
It really depends. If the majority of your users only have need of the basic features then it doesn’t make sense to make the high-end the first thing they see. But if your product is targeted to enterprise customers this layout would make sense.
Thank for for the great CSS3 tutorial.
However, I feel as if the tutorial’s header is misleading. This is a CSS3 tutorial, not a tutorial on how to design a effective pricing table. You didn’t once mention why this is a effective method of presenting the pricing option to visitors.
this is great stuff! it would be really helpful if you listed out browser compatibilities with this … that is really, ie8,9,10
Why are you specifying Arial ahead of Helvetica in the stylesheet? Yuck.
Really nice! Is it free to use or is there a special licence?
Feel free to use it with or without any attribution.
Wow! It’s really amazing!
nice. thanks.
Amazing CSS effects :)
Well although the code works fine but I guess we could do some tweaks in the CSS to improve the graphical output. Anyways I love your idea of placing professional tariff plan in the middle as the highlighted one and I agree that moving down on the price is better for users than moving upwards.
Very good exampe. Thanks
It would be really good if you could provide a download link, or just show the full code for the examples at least. Thanks.
Lucas, there is no download link because there is no need for it. The demo source page is all you need, there are no other external resources.
Cheers!
So, I’m trying to use this pricing table with my website, which is coded using the folder tabs code you also share on this blog and…. nothings showing up oO I’m rather terrible with tables TBH, so its probably something simple. Any chance you can pin point what it is?