CSS Cheat Sheet

An Overview of Cascading Style Sheets with Sample Style Sheet

When I'm building a Web page from scratch, I like to start with basic styles defined. It's like starting with a clean canvas and fresh brushes. One of the first problems that Web designers face is that Web browsers are all different. The default font size is different from platform to platform, the default font family is different, some browsers define margins and padding on the body tag while others do not, and so on.

So I have a series of styles that I set as my default styles on Web pages.

CSS and the Character Set

First things first, I like to make sure that I set the character set of my CSS documents to utf-8. While most of the pages I design are written in English, some do get localized and I like to make sure that my Web pages can be localized as easily as possible. Setting the character set in the external style sheet won't take precedence over an HTTP header, but in all other situations it will.

It's easy to set the character set, for the first line of the CSS document I write:

@charset "utf-8";

This way, if I use international characters in the content property or as class and ID names, the style sheet will still work correctly.

Styling the Page Body

The first thing my default style sheet has in it is styles to zero out margins, padding, and borders. This makes sure that all browsers place the content in the same place, there aren't any hidden spaces between the browser chrome and the content.

For most Web pages, this is too close to the edge for text, but it's important to start there so that background images and layout divisions are lined up correctly.

html, body {
 margin: 0px;
 padding: 0px;
 border: 0px;
 }

I also set the default foreground or font color to black and the default background color to white.

While this will most likely change for most Web designs, I like to have these standard colors set on the body and html tag at first so that the page is easier to read.

html, body {
 color: #000;
 background: #fff;
 }

Default Font Styles

The font size and font family are something that will inevitably change once the design takes hold, but I always start with a default font size of 1em and a default font family of Arial, Geneva, or some other sans-serif font. I use ems because I like to keep my pages as accessible as possible. And I use sans-serif fonts to keep the page more legible on the screen.

html, body, p, th, td, li, dd, dt {
 font: 1em Arial, Helvetica, sans-serif;
 }

There may be other places where you might find text, but I have found that p, th, td, li, dd, and dt are a good start for defining the base font. I also include html and body just in case, but many browsers will override the font choices if you only define your fonts on the html or body.

Headlines

HTML headings are important to use to help your site outline and let search engines get deeper into your site. But without styles, they are all fairly ugly. So I set default styles on all of them. I define the font family and the font sizes for each.

h1, h2, h3, h4, h5, h6 {
 font-family: Arial, Helvetica, sans-serif;
 }
 h1 { font-size: 2em; }
 h2 { font-size: 1.5em; }
 h3 { font-size: 1.2em ; }
 h4 { font-size: 1.0em; }
 h5 { font-size: 0.9em; }
 h6 { font-size: 0.8em; }

And Don't Forget the Links

Styilng the link colors is almost always a critical part of the design, but I've found that if I don't define them in my default styles, I typically forget at least one of the pseudo-classes. So I define them with some small variation on blue and then change them once I have the color palette for the site defined.

a:link { color: #00f; }
 a:visited { color: #009; }
 a:hover { color: #06f; }
 a:active { color: #0cf; }
  • links are blue
  • visited links are dark blue
  • hover links are light blue
  • active links are even paler blue

By styling the links with a fairly innocuous color scheme it insures that I won't forget any of the classes, and also makes them a little less loud than the default blue, red, and purple.

The Full Style Sheet

Here is the style sheet written in full:

@charset "utf-8";
 
 html, body {
 margin: 0px;
 padding: 0px;
 border: 0px;
 color: #000;
 background: #fff;
 }
 html, body, p, th, td, li, dd, dt {
 font: 1em Arial, Helvetica, sans-serif;
 }
 h1, h2, h3, h4, h5, h6 {
 font-family: Arial, Helvetica, sans-serif;
 }
 h1 { font-size: 2em; }
 h2 { font-size: 1.5em; }
 h3 { font-size: 1.2em ; }
 h4 { font-size: 1.0em; }
 h5 { font-size: 0.9em; }
 h6 { font-size: 0.8em; }
 a:link { color: #00f; }
 a:visited { color: #009; }
 a:hover { color: #06f; }
 a:active { color: #0cf; }