Fundamentals of CSS for Web Designers: Creating Meaning through Syntax
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.
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.
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:
- The subject (what we are describing) is the selector.
- The object (what is being described about the subject) is the property.
- The verb (always the verb “to be” in CSS) is represented by a colon.
- The adjective (the description) is the value.
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.
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.
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; }