Stuff & Nonsense Home

Where you’ll find designer, author and speaker Andy Clarke. The bastard.

Blogging And All That Malarkey

Prices and plans design patterns

When is it the right thing to do not to attempt to reinvent a well established, tried and tested design pattern or convention. This question has come up while I have been designing the CannyBill prices and plans page.

Although I'm not a fan of Smashing Magazine (or more specifically any list-based article) one article from last year did catch my eye and found itself in my Google Bookmarks, Pricing Tables: Examples And Best Practices. In his article, Györay Fekete looks at best practices and guidelines for designing pricing tables and after a thorough examination of examples he suggests some fantastic advice.

  • Use background colours to visually separate different plans
  • Use different font sizes and colours for titles and important headlines
  • Use unobtrusive CSS and JavaScript when designing a pricing table
  • Always show the prices of your plans
  • Mention the currency of your prices to avoid confusion, because a dollar sign could represent US, Canadian or Australian currency

In a follow up article from this year, Janko Jovanovic suggests 10 UI Design Patterns You Should Be Paying Attention To, including,

Each plan should be descriptive and provide the following information.

  • Name of the plan, such as basic or professional
  • Price of the subscription plan
  • List of features
  • Sign up button

Although like many designers, I am often driven by the desire to create something different and to avoid following what others have created, I have begun to realise that in some situations, following a tried and tested pattern or convention can benefit a person's experience of a design and therefore help the company I am designing for achieve their goals. Conventions can be used as a starting point for design and a platform for innovation.

37Signals and in particular their Basecamp product site and sign-up process are what I consider to be the benchmark in this area. Their pricing and sign up page has become the standard that others have followed, as you'll see if you look at the examples featured by Györay Fekete.


Basecamp's plans and sign up

When I started to redesign CannyBill's pricing and sign up page I tried hard, spending several hours sketching and prototyping, to design away from the convention. No matter how many sketchbook pages I filled, I felt that I was trying too hard to design an alternative solution for something that was so well designed that it needed no alternative.


CannyBill plans (early iteration)

The more I worked on design alternatives, the more I wondered about my motivation, about whether my time (and my client's money) could be better spent on my innovating in other areas of the project where that innovation was needed.

With this acceptance, that following established patterns does not always mean that I am any less of a designer, in mind, I started again to design the best interface that I could for CannyBill's prices and plans page.

This page clearly lays out their available plans and options, reinforces the sales message through a customer testimonial, answers key questions that potential customers might have at this stage and ends by offering help if a prospect needs more help or questions answered.


CannyBill plans (later iteration)

Then, taking heed of advice suggested by Györay Fekete and following another established convention, I added a different colour to each of the plans to distinguish it from the others on offer.


Final iteration Flickr | HTML

HTML5

I made the interface for CannyBill's plans from a simple ordered list (I agonised for, well, minutes, about whether this list should be unordered or not).

<ol class="hlisting offer-sale plans">
<li class="item small"></li>
<li class="item basic"></li>
<li class="item professional"></li>
<li class="item enterprise"></li>
</ol>

Each item has its own class attribute (small, business, professional and enterprise) and a common class attribute value of item. Each item contains.

<li class="item basic">
<h4 class="fn">Basic <span class="price">£3.99 ($6 US)</span></h4>
<ul class="description">
<li><strong>15</strong> active clients</li>
<li><strong>Unlimited</strong> invoices per month</li>
<li><strong>Unlimited</strong> staff logins</li>
<li><strong>Free</strong> upgrades</li>
<li><strong>RapidSSL Certificate</strong></li>
</ul>
<p>Unlimited telephone & email support</p>
<p><a href="#" class="action">Sign up 
<span>30 day free trial</span></a></p>
</li>

The distinctive class attributes allow me to style certain elements in these items differently, for example the colour of the sign up buttons.

CSS

The CSS needed to transform this list into the interface that I sketched was simple. Give each of the list items dimensions, padding and type styles, then float them left.

ol.plans .item {
float : left; 
width : 180px; 
padding : 19px 19px 0; 
text-align : center; 
border : 1px solid rgb(223,231,239); 
color : rgb(32,40,48); 
text-shadow : rgb(255,255,255) 0 1px 1px; }

Now make use of those class attributes to colour each of the buttons differently using descendent selectors. Again, I'm using CSS gradient backgrounds and border-radius to create the button shapes without images.

a.action {
border-radius : 10px;
-moz-border-radius : 10px; 
-webkit-border-radius : 10px; }

.plans .basic .action { 
background-color : rgb(229,195,85);
background-repeat :  no-repeat;
background-image : -webkit-gradient(linear, 
left top, left bottom, 
from(rgb(229,195,85)), 
to(rgb(187,160,71))); 

background-image : -moz-linear-gradient(
left top, left bottom, 
from(rgb(229,195,85)), 
to(rgb(187,160,71))); }

If you haven't already, open my new CannyBill pricing and signup page in either Safari 4 or Firefox 3.6 Alpha. Sorry Internet Explorer, Opera or Firefox 3.5 users, look at the screenshot on Flickr instead.

To add sparkle to the interface for people who use progressive browsers (don't forget that now includes millions of Google Chrome users too), CSS transforms and transitions are perfect.

.csstransforms .plans .item {
-webkit-transition-property : scale; 
-webkit-transition-duration : 0.2s; 
-webkit-transition-timing-function : ease-in-out; 
-moz-transition : all 0.2s ease-in-out;  }

.csstransforms .plans .item:hover { 
border-radius : 10px;
-moz-border-radius : 10px;
-webkit-border-radius : 10px;
box-shadow : 0 0 10px rgba(0,0,0,.5);
-moz-box-shadow : 0 0 10px rgba(0,0,0,.5);
-webkit-box-shadow : 0 0 10px rgba(0,0,0,.5);
-webkit-transform : scale(1.05); 
-moz-transform : scale(1.05); }

People using browsers that have not yet implemented transforms and transitions will not know what they are missing.

Is that a plan?

What do you think? At what stage do you accept and build on the work of others instead of reinventing a solution to a problem that may already have been solved. At what stage does a great solution become a design pattern or convention? And what thoughts do you have on the new CannyBill pricing and signup page.

Update

Thanks to TheFella for pointing me in the right direction. The CSS transitions on the plans are now smooth both in and out (that should please a few people). I have updated the CSS in the article and example file accordingly. Thanks Fella.

Leave your comment

Shaun Hare

October 22 2009 @ 01:46am #

As always Mr Clarke, very very very nice.
One point that niggles however, the hover states (when using a proper browser), obscure the text above and below the plans a little

Andrew Crookston

October 22 2009 @ 01:46am #

Good reasoning. But I think the reverse package order (like 37signals) starting with the Enterprise to the left could generate a higher click-rate for the larger packages. Resulting in more revenue for your customer.

If anybody claims your trying to trick ppl to buy more than they need just highlight the standard package (again like 37s).
It feels sad to “copy” 37signals but I think they have put a lot of thought into the selection design and there might not be any better way to do it.

Think about it. ;)

Kyle Gach

October 22 2009 @ 02:01am #

It’s a shame that CSS transitions cannot be applied in reverse (I haven’t seen any method for doing so, at least). The scaling effect is beautiful until you mouse off of an item, causing a very abrupt jump back to 100% scale. Would sure love to see that one solved.

Otherwise, brilliant work, and thank you for once again opening up your design process for the world so that we may observe and learn from it.

Edoardo Biasini

October 22 2009 @ 02:03am #

Yeah much better now!

WelcomeToTheSky

October 22 2009 @ 02:03am #

I’m sorry to tell you that, because I really think your work on Cannybill is awesome, but I don’t think it will help a lot final users. Maybe I’m wrong, but I really think Basecamp did a great job by highlighting the Plus plan, they did a great job. This help the user in his choice of the right plan. Maybe it will be better with just two colors (like main action and secondary action).

What do you think?

Chris Enns

October 22 2009 @ 02:17am #

I agree with Kyle - it’s too bad the transitions are so jarring when you move the mouse away.  I really like the idea, but I’m not sure the actual use of it works for me.

The transition from square to rounded corners could be smoother - but again I suspect that’s a limitation of the way CSS transforms and transitions work.  Coming from a video editor’s view, it doesn’t look as smooth as it could.  But I know it’s still worlds better from where we used to be!

All in all I like the look and feel of the site.  And more than anything, I really appreciate the openness you and your client have to share this process.

TheFella

October 22 2009 @ 02:19am #

@kyle

You can use “ease-in-out” to have smooth transitions back again.

Mike

October 22 2009 @ 02:20am #

So a devil’s advocate question, how is:
-webkit-gradient(linear,
left top, left bottom,
from(rgb(229,195,85)),
to(rgb(187,160,71)));

any different than:
progid:DXImageTransform.Microsoft.gradient(enabled=‘false’,
          startColorstr=#550000FF, endColorstr=#55FFFF00)

?

Andy Clarke

October 22 2009 @ 02:33am #

Mike: So a devil’s advocate question, how is -webkit-gradient any different than progid:DXImageTransform

— Good question. There is certainly no harm in using Microsoft filters, separated of course into IE7 and IE8 stylesheets (IE8 requires the -ms- prefix). Fundamentally the difference is that Webkit and Mozilla are using their vendor prefixes to enable us to try out their suggestions to new CSS. They are doing this inside the framework of the W3C and hoping that other CSS Working Group Members will participate and make their own implementations.

TheFella: You can use “ease-in-out” to have smooth transitions back again.

— If you can get that working in a test case, I’ll buy you beer, because it never seems to work for me.

David Hernandez

October 22 2009 @ 02:40am #

I was just thinking about innovation/reinventing the wheel yesterday while chopping wood. An ax. Wood. Chop. It works. But as I re-think it after reading this post I realize that I like to chop my stumps on the ground instead of on another stump—I get a better swing angle plus I can nestle uneven or small pieces into the dirt to stand up straight. It works, better.

Could it be that we are on the wide swing of the innovation pendulum right now, and that a good fit is sometimes (often?) more important?

On a user experience note, it would be nice to see a synopsis under the title of each package. This is a really helpful feature of the Basecamp comparison and helps me make sense of the whole. Further, as I looked at the details of each package I realized that, in terms of comparison, the whole table tells me that I can pay more for more active clients. Period. It’s nice (and needful) to be reminded of all that comes with the package, but I wonder if the redundancy of “unlimited” and “free” doesn’t actually decrease their punch. As I’m thinking of it now, what if you had those phrases listed one time, in larger type, underneath all of the items? The number of users per plan could then be listed under each plan and clearly be the differentiating factor, while clearly illustrating the value inherent in whatever plan best fit the user’s needs.

Mr Gates

October 22 2009 @ 02:48am #

I have given you all that is necessary to create “a beautiful web” dating back to IE 5.5.  It has always been there, you all were just to lazy to use it.
Is all the hate towards my company, my browser and most of all… ME really necessary?

Andy Clarke

October 22 2009 @ 02:57am #

Mr Gates: What a coincidence! Only the other day I was searching on Bing for a new case for my Zune and I was saying to my son how I missed your fantastic commercials with Seinfeld. I wish you would do more.

I must say that I have a huge respect for what your company is doing. Steve Balmer is an inspiration, not just as a business leader (I love how well he has kept pace with Apple, Google and Twitter) but also as a human being. And what can I say about Songsmith, truly a revolutionary piece of software and a sign that Microsoft is far from being the sluggish dinosaur that so many people think it to be.

Good luck with your retirement.

Paul Burton

October 22 2009 @ 02:58am #

A simple reality of visual design for the web is that few people truly “innovate” anything. Most of the time, what people pass off as “innovation” in visual design boils down to glad-handing amongst friends and followers.  A pessimistic view perhaps, but this is how art process has persisted for thousands of years.  One person creates something someone else deems “cool”, then people follow the convention until something new comes along.  The fact is there are visual solutions that can’t be drastically improved upon ... only tweaked to fit your need.

The Basecamp signup page is a perfect example of a UI versioning process that married visual design with the most efficient user paradigm.  I suspect that if the best UI solution for conversion had been ugly as sin, they wouldn’t have given two shits about the visual design.

Couple notes about the CannyBill design.
1) This is a personal preference, but I find the scale of the transform to be a bit much - if for no other reason than the transform speed seems to take longer than necessary. I’d also reduce it enough so that it doesn’t overlap other site content.

2) When each selection is enlarged, if you look closely, you can see the grey background on both sides of the content block break to white - just below (and above) the curved areas of the popup.

Dave Scarlatella

October 22 2009 @ 03:34am #

Hi Andy,

I have little experience with CSS transitions as I have yet to use it on a production site, but over lunch I was almost sure an animate out was possible.

I haven’t tested it but it seems that an answer might be found here: http://vision-media.ca/resources/css/css-transformations-animations-and-transitions-examples#example-5

It seems the solution is to put a transition on both the default and hover states.

.csstransforms .plans .item {
border-radius : 0;
-moz-border-radius : 0;
-webkit-border-radius : 0;
-webkit-transform : scale(1);
-moz-transform : scale(1); }

Again I haven’t experimented with this, just my thoughts during lunch

Dave Scarlatella

October 22 2009 @ 03:52am #

Just looked again and it doesn’t look like you should need a transition for the hover state at all. Please ignore the css above as I had copied the wrong section.

It seems that the css transition rule is on the base element and the hover state simply has the rules for the change. When you are no longer hovering it should animate with the same rules back to the rules for the default state. I’ll try it out later tonight after work.

Andy Clarke

October 22 2009 @ 04:14am #

Thanks to TheFella for pointing me in the right direction. The CSS transitions on the plans are now smooth both in and out (that should please a few people). I have updated the CSS in the article and example file accordingly. Thanks Fella.

Philip Renich

October 22 2009 @ 04:35am #

I love the rounded corners and popup effect. It’s gorgeous and stands out. But using scale(), the text also enlarges which in concept is great, but in execution makes the fonts shudder a little and not be quite as nice. This could be an issue with PC/Safari, can someone confirm that with a Mac?

I was wondering if you could do the same transition and effect on the background while leaving the internal text and content the same? It would give a different look, but technically, I’m interested.

(lastly, I’m not sure if you’re looking for any design critiques, but may I suggest a lighter hand on the shadow surrounding the Sign Up buttons? Seeing as it is on top of the plan “card” it seems odd to have it visually lift off the card as much as the card is lifting away from its siblings)

Ahmed El Gabri

October 22 2009 @ 04:42am #

Great work as usual , but i`m not sure about the different coloring for each sign up button it seems too much for my liking.

Matt Puchlerz

October 22 2009 @ 04:49am #

Like Philip just mentions, the implementation of scale() is interesting as it just enlarges pixels until the animation completes, at which point the element is redrawn into clarity. This becomes very apparent if you change the scale() on hover to a greater value like 3.

I wonder if future implementations will allow it to remain clear during the animation as well. I’d have to imagine that redrawing at each step of the animation would be costly performance-wise, but who knows?

Fredrik W

October 22 2009 @ 05:00am #

It looks splendid. I think you should take the colour-differentiation to the respective headlines as well.

Guttorm Aase

October 22 2009 @ 07:05am #

I think going with the “established standard’ is the right move here, Andy. Also, very nice touch on the hover effect. Overall great work, love reading about your work in progress.

One thing that struck me when looking at this in the screenshot was that the ‘grid’ around the options doesn’t really stand out much, making the whole area look a bit undefined, monotone and boring. Once I clicked on the link and started playing around with the interface the hover effect made the layout ‘pop’ much more and overall made it look and feel much more engaging.

To address this it struck me that it might be a good idea to pre-select one of the options, as 37signals does, and activate the hover style on e.g. the ‘Professional’ option on load. I think this would help with making the page look more interesting from the start and steer the user towards your higher-level plans.

Not completely sold on the differently colored buttons BTW, it appears a bit busy to my eye, but it could just be me.

TheFella

October 22 2009 @ 08:55am #

Looking good Andy. I’m assuming the beer is in the post…

Andy Clarke

October 22 2009 @ 09:10am #

Fredrik W: I think you should take the colour differentiation to the respective headlines as well.

— Great suggestion, that was on my mind too. Look out for the latest iteration.

TheFella: I’m assuming the beer is in the post.

— Fat chance Conor, you’ll have to fight me for that. No, wait…

Martin

October 22 2009 @ 10:33am #

Very impressive and very inspiring. I quite like the different button colours.

It’d be interesting to see whether people interpret the scaling transformation as the clickable area to sign up, instead of the button.  No biggie in any case.

Steve Avery

October 22 2009 @ 08:03pm #

Hi Andy

Great work. I love it! Just thought it would be worth to mention that I know how much hard work that has gone into your universalIE6 style sheet that gets served to IE6, however I’m wondering if it’s worth the effort to look at tweaking the styles your applying to the heading tags?

I’m sure you’ll agree that the colours and shadows that are apparent make them hard to read. On the other hand you may not be too concerned about it.

Keep up the amazing work!

Rolograaf

October 22 2009 @ 08:20pm #

There is a solution for the CSS gradients in other browsers by http://weston.ruter.net/projects/css-gradients-via-canvas/

Adam Clare

October 23 2009 @ 08:20pm #

Nice layout Andy, one thing that sprung to mind re the mark up, would you not consider a definition list more suitable than nested ol/ul’s?

I find I’m using them more and more over the past couple of years, I find they help, and for me, make sense semantically in structures where there is a topic followed by information on that topic.

Andy Clarke

October 23 2009 @ 08:42pm #

Adam Clare: Would you not consider a definition list more suitable. I find they help, and for me, make sense semantically in structures where there is a topic followed by information on that topic.

— I used to think the same way, and a definition list’s name and value pairs are certainly useful. But the name of a plan and its description are not strictly a definition, so to use a definition list would be markup abuse I think.

Adam Clare

October 23 2009 @ 09:13pm #

Interesting angle, not sure I’d go along with it, from my own perspective I’d argue you *are* defining the price plans and their terms no?

Commenting is not available in this channel entry.
Hardboiled Web Design

Hardboiled Web Design by Andy Clarke

How the latest technologies and techniques will make your websites more creative, flexible and adaptable. Get hardboiled in all formats from Five Simple Steps. Digital formats also available at Amazon.com, Amazon.co.uk and the iBooks store.

We’ve deconstructed this site to focus on content while we restyle. Expect wonkiness during the transition.