Lecture Notes 3:
Cascading Style Sheets (CSS)

CSE 190 M (Web Programming), Spring 2007

University of Washington

Reading: Sebesta Ch. 3 sections 3.1 - 3.2, 3.4 - 3.6.6, 3.8 - 3.9

Valid XHTML 1.0 Strict Valid CSS!

The bad way to produce styles in a web page

<p><font face="Arial">Welcome to Greasy Joe's.  You will
<b>never, <i>ever, <u>EVER</u></i></b> beat our 
<font size="+1" color="red">AMAZING</font> prices!</font></p>

Welcome to Greasy Joe's. You will never, ever, EVER beat our AMAZING prices!


Cascading Style Sheets (CSS)

Basic CSS rule syntax

selector {
    property: value;
    property: value;
    ...
    property: value;
}
p {
    font-family: sans-serif;
    color: red;
}

Attaching a CSS file: link

<link rel="stylesheet" type="text/css" href="filename" />

<link rel="stylesheet" type="text/css" href="style.css" />

<link rel="stylesheet" type="text/css"
href="http://www.google.com/uds/css/gsearch.css" />

CSS properties for colors

p {
    color: red;
    background-color: yellow;
}

This paragraph uses the style above.


Specifying colors

p { color: red; }
h2 { color: rgb(128, 0, 196); }
h4 { color: #FF8800; }

This paragraph uses the first style above.
This heading uses the second style above.
This heading uses the third style above.


CSS properties for fonts

The font-family property

p { font-family: "Georgia"; }
h2 { font-family: "Arial Narrow"; }

This paragraph uses the first style above.

This heading uses the second style above.


More about font-family

p { font-family: "Garamond", "Times New Roman", serif; }

This paragraph uses the above style.


  • if the first font is not found on the user's computer, the next is tried
  • generally should specify similar fonts
  • placing a generic font name at the end of your font-family value ensures that every computer will use a valid font

The font-size property

p { font-size: 14pt; }

This paragraph uses the style above.

More about font-size

p { font-size: x-large; }

This paragraph uses the above style.


  • px specifies a number of pixels on the screen (absolute)
  • pt specifies number of point, where a point is 1/72 of an inch onscreen
  • em specifies number of m-widths, where 1 em is equal to the font's current size

font-weight, font-style

p {
    font-weight: bold;
    font-style: italic;
}

This paragraph uses the style above.


Body styles

body { font-size: 16px; }

Practice Problem

kitten 1 KITTENS! kitten 2

Why I love them:

  1. They are little.
  2. They make adorable sounds:
    • Meow!
    • Purr!
  3. JUST LOOK AT THEM!

Edit this HTML and add the following styles to it:

  • entire page should have a pink background and use 16 point font
  • main heading should use Comic Sans MS font
  • lists should appear in a Lucida Console font
  • list numbers should have yellow background; list items should have green background
  • link text should be purple
  • quote text should be italicized

Why are strong, em better than b, i?

strong { font-weight: normal; color: red; }
em { font-style: normal; background-color: #DDDDDD; }

Now if I want to strongly emphasize something or just emphasize it, it doesn't necessarily have to be bold or italic.


CSS properties for text

text-align

blockquote { text-align: justify; }
h2 { text-align: center; }

The Emperor's Quote

[TO LUKE SKYWALKER] The alliance... will die. As will your friends. Good, I can feel your anger. I am unarmed. Take your weapon. Strike me down with all of your hatred and your journey towards the dark side will be complete.


text-decoration

p { text-decoration: underline; }

This paragraph uses the style above.


CSS properties for dimensions

p { width: 400px; background-color: yellow; }
h2 { width: 50%; background-color: aqua; }

This paragraph uses the first style above.

This heading uses the second style above.


Comments: /* ... */

/* This is a comment.
   It can span many lines in the CSS file. */
p { color: red; background-color: aqua; }

Grouping styles

p,h1,h2 { color: blue; }
h2 { background-color: yellow; }

This paragraph uses the above style.

This heading uses the above style.


Document tree

<html><head><title>My home page</title></head>
<body><h1>My home page</h1>
<p>Let me tell you about my favorite composers:</p>
<ul><li>Elvis Costello</li>
<li>Johannes Brahms</li>
<li>Georges Brassens</li>
</ul></body></html>

Document tree

Inheriting styles

body { font-family: sans-serif; background-color: yellow; }
p { color: red; background-color: aqua; }
a { text-decoration: overline underline; }
h2 { font-weight: bold; text-align: center; }

This is a heading.

A styled paragraph. Previous slides are available on the web site.

  • a bullet list

Styles that conflict

p,h1,h2 { color: blue; font-style: italic; }
h2 { color: red; background-color: yellow; }

This paragraph uses the first style above.

This heading uses both styles above.


W3C CSS Validator

<p><a href="http://jigsaw.w3.org/css-validator/check/referer">
<img src="http://jigsaw.w3.org/css-validator/images/vcss"
alt="Valid CSS!" /></a></p>

Valid CSS!

Practice Problem

kitten 1 KITTENS! kitten 2

Why I love them:

  1. They are little.
  2. They make adorable sounds:
    • Meow!
    • Purr!
  3. JUST LOOK AT THEM!

Edit the previously-styled Kitten HTML and add the following styles:

  • all headings should be centered, bolded, and underlined
  • the images should be enlarged to occupy one-third of the screen each
  • the list of items should be narrowed to occupy only half the page width
  • the text should be spaced so that the lines are further apart
  • emphasized and strongly emphasized text should appear slightly larger than the other text on the page