This is the first in a series of articles on the jQuery UI CSS Framework.. This is a powerful suite of CSS selectors that you can use to build web applications with a consistent UI. The main jQuery UI demo page shows you a list of UI widgets (which are still somewhat limited in scope compared to ExtJS, for example), but it doesn’t do a very good job on selling you on the benefits of designing other UI components, or components of those widgets, using the UI CSS framework. In this article I explain the framework, its benefits and weaknesses, and show you one simple example of styling a button.
What is the jQuery UI CSS Framework?
It is a set of CSS selectors that let you design your web pages to conform to the jQuery UI widgets standards. Quote:
The jQuery UI CSS Framework provide semantic presentation classes to indicate the role of an element within a widget such as a header, content area, or clickable region. These are applied consistently across all widgets so a clickable tab, accordian or button will all have the same “ui-state-default” class applied to indicate that it is clickable.
(from the jQuery UI Theming documentation page).
Benefits of the jQuery UI CSS Framework
Here are the top benefits I think the framework has to offer:
- It handles difficult design issues for you. For example, you can apply rounded corners to buttons and links easily, just by adding a class of ”ui-corner-all” to your element.
- It gives you a consistent look and feel to your page design elements
- You can use the jQuery UI widgets (such as tabs, dialog boxes, accordions, etc. in conjunction with your own custom elements (text, tables, buttons, boxes, icons, etc.) and get the same look and feel for both.
- The UI is skinnable. You can use Themeroller to roll your own theme, or select an existing theme. For example, I’m using the ‘Redmond’ theme in an application I’m currently building. You can see the Gallery of themes by clicking the ‘Gallery’ tab in the top left corner. The gallery also shows you what the standard jQuery UI widgets look like. Unfortunately it doesn’t show you other common design elements- but that’s why I’m blogging!
- You can easily switch to another theme just by changing a single path reference in your applications. You can see this at work by using the Themeswitcher widget, which is easy to embed in your page (just remember you will be connecting to the jqueryui.com website when you use this widget).
Downsides to the Framework
The framework is not without its weaknesses, some of which, over time, I’m sure will be addressed. The major ones I see are:
How To Learn About The Framework
I learn about how to use the framework by using the following strategies:
- Read the official CSS Framework documentation.
- Try out the widget examples and do a ‘View Generated Source’ or ‘Inspect Element’ with Firebug. This shows you how the UI Widget developers utilized the CSS framework. For example, I noticed that the Dialog widget shows really nice looking Ok and Cancel buttons, so I inspected them to see which CSS rules had been used. (See my example below).
- Follow the jQuery UI forum and read books. There’s a new edition of a book on jQuery UI 1.7 that recently (Nov 2009) came out.
Example Using the Framework To Style a Button
Here’s a simple example of using the CSS selectors to style a button. I’m using the Redmond theme here.
I assume you know how to install the jQuery UI library and CSS. You can grab it here.
Here’s the code:
<style>
body {font-size: 62.5%}
</style>
<button id="cancel" type="button" class="ui-state-default ui-corner-all">Cancel</button>
Here’s what it looks like:

jQuery UI button in FireFox

jQuery UI button in Chrome

jQuery UI button in IE
As you can see, FireFox and Chrome each do a nice job of rendering the rounded corners, while IE 8 still doesn’t support this feature (at least, not with CSS).
Explanation of The CSS
I’m using two classes on the button element. This is a common coding technique when using the jQuery UI CSS framework. It results in combining the various selectors of each style in an accumulative manner. The ui-state-default class “Applies “clickable default” container styles to an element and its child text, links, and icons.” For example, we could apply this to a link and get essentially the same effect. This class includes a background image that provides the button coloring. As I mentioned earlier, if you change the theme used in your app, the button will appear in the color of that theme.
The ui-corner-all selector applies a radius (rounded corner) to each of the four corners of the button border. That’s it!
Next Article
In the next article I will show you how to style a div to create a nice looking box with a heading in it.