Creating Resizeable Buttons in CSS


Have you ever designed a page for a web application and wanted to make a nice button for the application? You probably opened your photo editor and started working on the button. But, what if your design resizes itself based on the users browser size? You will probably want the button to resize as well. Well, over at CSS Globe they have written a script to do just that using CSS.

Below is an excerpt from the article explaining the concept.


This concept is probably familiar to you from various navigation tab styling techniques. We have one long background image:


This one is 550px wide. I believe that is more than sufficient for buttons :)

So, we apply this image as a background image of a top element (in this case SPAN), place it to top left and add some left padding. Nested element (in this case EM) have the same background image but placed to top right and with right padding. As the content text grows so will the button.


Height of the button is fixed in my example but you can use similar technique and some more markup and place the same background image to all 4 corners.

To make sure that the text is vertically centered I use line-height property.

The HTML that is required for applying the CSS to would be the below.

<button><span><em>Button text</em></span></button>

The below is the CSS that is used.

button span, button em{
button span{
	background:url(bg_button.gif) no-repeat 0 0;
button em{
	background:url(bg_button.gif) no-repeat 100% 0;

You can read the full post here.

You can see the demo here and you can download the source code and image here.

This code could be very useful and I will probably use it in my next application. If you have used a technique like this in an application that you've made I'd love to hear about it, you can leave it in the comments.

Hi David

I think you are late for posting about this technique as it is pretty old way of creating expandable buttons with the help of CSS.

This technique is called Closing Doors.

Well, good thing is that you have learned the use of this technique and also might have taught someone else. But do keep yourself updated.

Enjoy Coding!

That'd be Sliding Doors, not Closing Doors :-)

I believe David acknowledges that he didn't invent the technique in the post ("This concept is probably familiar to you from various navigation tab styling techniques"). This is still a good blog post as a lot of beginners wouldn't be able to make the leap from LI's containing spans to buttons containing spans. Plus, you need the extra styling on the button to get rid of the default styles a browser applies.

Good job

[...] Creating Resizeable Buttons in CSS | Ajaxonomy (tags: buttons css example tutorial) [...]

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <pre> <div> <blockquote> <object> <embed> <img> <param>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.

More information about formatting options

This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Copy the characters (respecting upper/lower case) from the image.