Fundamentals of CSS for Web Designers: Creating Meaning through Syntax

By Jason Cranford Teague

Date: Jul 23, 2009

Note: This is an excerpt from the Fundamentals of CSS for Web Designers article on Peachpit.com. Read the full article.


To describe your Web designs, you need to understand the syntax of CSS. Jason Cranford Teague shows that once you get the hang of it, you’ll be speaking in CSS in no time.
04-00_ugsmag.jpg

Click to view larger image

Syntax is how you put words together to create meaning: Punctuation and parts of speech are placed in a specific order to describe something. How you combine these elements has a direct effect on the meaning of what you are trying to communicate. To describe your Web designs, you need to understand the syntax of CSS.

Although CSS syntax is relatively simple compared to the syntax of a language such as English, it is also less forgiving of mistakes. A misplaced comma or semicolon might change your styles completely or might even turn your styles into incomprehensible gibberish, at least to the browser. But once you get the hang of it, you’ll be speaking in CSS in no time.

The Rules of Style

Web pages are created using HTML tags to add structure to the page. Most of these tags have inherent styles—that is, styles that the browser manufacturer has set as the default. If we left it to the browser to style our pages, they would all look pretty much the same, and none too interesting. CSS acts on the HTML tags telling them how they should appear when rendered on the screen. To change a tag’s style, you create CSS rules that bind styles to particular elements on the screen, either directly to a specific HTML tag or using a class or ID that can then be applied to any HTML tag you desire.

Let’s keep it simple for now, and start by looking at how we create a basic style for the header level 1 HTML tag <h1>. CSS rules begin with a selector, which is what is being defined, followed by a declaration or list of declarations between curly brackets to define the selector’s style.

04-00_ugsmag.jpg

Click to view larger image

sis_c04-i01.jpg

Click to view larger image

Parts of a Style Rule

A CSS rule has the equivalents of the subject, object, verb, and adjective that you would find in any English sentence:

sis_c04-i02.jpg

Click to view larger image

A Basic Style Rule

To tell another person that you want a level 1 header to be red, you might say something like:

The level 1 header’s text color is red.

In CSS, to communicate the exact same thing, you could say:

h1 { color: red }

In this case, color refers to the text color and red is a predefined keyword that the browser translates into an actual color value. We could also use the RGB scale:

h1 { color: rgb(255,0,0) }

Or the hexadecimal color scale:

h1 { color: #ff0000 }

These all say the same thing: The first-level header’s text color is red. In English this is called a declarative sentence. In CSS this is called a CSS rule or selector declaration.

You are declaring style properties for the selector, in this case the h1 selector, which effects the <h1> tag. There are three types of selectors in CSS. The one shown here is an HTML selector because it corresponds to a specific HTML tag. We will learn about class and ID selectors a bit later in this chapter.

sis_c04-i03.jpg

Click to view larger image

Declaring More Styles

To add multiple declarations to your rule, separate each by a semicolon. You can have one, two, ten, one hundred, or however many declarations you want in a single rule, as long as you separate each by a semicolon, just like you might use a comma or semicolon to separate the items in a sentence:

The level 1 header’s color is red, the font family is Georgia, and the font size is 24px.

To say the same thing in CSS, you list the declarations:

h1 { color: red; font-family: Georgia; font-size: 24px; }

Notice that I’ve put a semicolon after each declaration, including the last one. In the previous example, where there was only one declaration, I didn’t add a semicolon because you don’t have to put a semicolon after the last declaration in a list; you could just leave it off. Now, forget you ever read that:

Always put a semicolon after every declaration in your list, even the last one.

Why? Because one day you will make a change to that CSS rule. You will add another declaration at the end of the list and you will forget to add the semicolon to the previous line, and your style will simply stop working. You will spend hours trying to figure out why your styles are not working only to discover it was because you forgot to add one stupid semicolon. How do I know this? I have spent far too many hours of my life banging my head against my keyboard trying to figure out why my styles aren’t working, all because of a missing semicolon. Learn from my mistakes: Always include the semicolon after every declaration.

sis_c04-i04.jpg

Click to view larger image

Combining Rules

What happens when the same styles are being applied to different selectors? For example, what if you want all of your headers to be red? You could create three different style rules, one for each header level:

h1 { color: red; } h2 { color: red; } h3 { color: red; }

When speaking, though, you wouldn’t say:

The level 1 header’s text color is red.

The level 2 header’s text color is red.

The level 3 header’s text color is red.

Instead, you would combine these into a single sentence using commas:

The level 1, level 2, and level 3 header’s text color is red.

Similarly, you can apply the same style declarations to multiple selectors in the same rule by putting them into a comma separated list:

h1, h2, h3 { color: red; }

Now the first three header levels will be red. Besides saving a lot of space, which is important once your CSS files start getting large, this also has the advantage of putting all of the selectors that use this value into a single place, making it easier to change later. For example, if your boss or client decides they want green headers instead of red, rather than changing the value in three places, you only have to change it once:

h1, h2, h3 { color: green; }

sis_c04-i05.jpg

Click to view larger image