This lesson provides a basic introduction to CSS. We discuss the general benefits of CSS and show you how to apply styles to specific elements throughout the your web pages. After going through this lesson, you'll have a good understanding of how CSS works. From there, it's mostly a matter of learning the different properties and values for setting styles.
<div> and <span> elements.@import.In HTML 4.0, most HTML formatting elements have been deprecated, meaning that, although they are still supported by browsers, the World Wide Web Consortium (W3C) recommends that they no longer be used. Web designers are to use CSS instead.
The major benefits of CSS are:
<blockquote> for formatting)Like this CSS tutorial? Try our self-paced online CSS course, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
CSS rules are statements that define the style of an element or group of elements. The syntax is as follows:
selector {property:value; property:value; property:value;}
Each property:value pair is a declaration. Multiple declarations are separated by semi-colons. The selector defines which elements are affected by the rule. Take a look at the following rule.
p {
color:darkgreen;
font-family:Verdana;
font-size:10pt;
}
This rule specifies that all paragraph text should be darkgreen and use a 10-point Verdana font.
Comments in CSS begin with "/*" and end with "*/". See the example below.
p {
color:red; /* All paragraphs should be red */
}
Like this CSS tutorial? Try our self-paced online CSS courses, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
Selectors identify the element(s) affected by the CSS rule. There are several different types of selectors:
Type selectors specify elements by tag name and affect every instance of that element type. Looking again at a previous example:
p {
color:darkgreen;
font-family:Verdana;
font-size:10pt;
}
This rule specifies that the text of every <p> element should
be darkgreen and use a 10-point Verdana font.
Descendant selectors specify elements by ancestry. Each "generation" is separated
by a space. For example, the following rule states that <strong>tags within <p> tags should have red text.
p strong {
color:red;
}
With descendant selectors generations can be skipped. In other words, the code above
does not require that the <strong> tag is a direct child of the
<p> tag.
Child selectors specify a direct parent-child relationship
p > strong {
color:red;
}
The > sign indicates that the rule only gets applied when the <strong> tag is a direct child of the <p> tag. So, in the first case below, it does get applied, but it does not in the second case:
<p>Life is <strong>good</strong>!</p>
<p>Life is <em><strong>really good</strong></em>!</p>
Almost all elements can take the class attribute, which assigns a class name to an element. Class names are created in
style sheet with rules defined for class selectors. Class selectors begin with a
dot and have arbitrary names. For example, the following rule creates a class called
"warning," which makes the text of all elements of that class bold and red.
.warning {
font-weight:bold;
color:#ff0000;
}
Following are a couple of examples of elements of the warning class.
<h1 class="warning">WARNING</h1> <p class="warning">Don't go there!</p>
If the class selector is preceded by an element name, then that selector only applies
to the specified type of element. To illustrate, the following two rules indicate
that h1 elements of the class "warning" will be underlined, while p elements of the class "warning" should not be.
h1.warning {
color:#ff0000;
text-decoration:underline
}
p.warning {
color:#ff0000;
font-weight:bold;
}
Because both rules indicate that the color should be red (#ff0000),
this could be rewritten as follows.
.warning {
color:#ff0000;
}
h1.warning {
text-decoration:underline;
}
p.warning {
font-weight:bold;
}
Note that you can assign an element any number of classes simply by separating the class names with spaces like this:
<div class="class1 class2 class3">...
As with the class attribute, almost all elements can take the id attribute, which is used to uniquely identify
an element on the page. ID selectors begin with a pound sign (#) and
have arbitrary names. The following rule will indent the element with the "maintext"
id 20 pixels from the left and right.
#mainText {
margin-left:20px;
margin-right:20px;
}
<div id="mainText">
This is the main text of the page...
</div>
Attribute selectors specify elements that contain a specific attribute. They can also specify the value of that attribute.
The following selector affects all links with a target attribute.
a[target] {
color:red;
}
The following selector would only affect links whose target attribute
is "_blank".
a[target="_blank"] {
color:red;
}
The universal selector is an asterisk (*). It matches every element.
* {
color:red;
}
Selectors can share the same declarations by separating them with commas. The following
rule will underline all i elements, all elements of the class "warning"
and the element with the id of "important."
i, .warning, #important {
text-decoration: underline;
}
For further information on CSS selectors see the W3C site.
Like this CSS tutorial? Try our self-paced online CSS course, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
In the event that rules conflict:
Imagine your selectors are stacked as follows with the ones on top having the highest specificity:
style attribute have no selector and have the highest precedence.id attributes (e.g, h1#foo {}) have the next highest precedence.h1.foo and a[target]) or pseudo-classes (e.g, a:hover) have the next highest precedence.h1) but no other attributes have the next highest precedence.*) has the lowest precedence.To figure out the exact specificity, follow this process:
style attribute, change the first digit to 1, giving you 1,0,0,0. In this case, you have the highest possible specificity and can stop calculating.ol#foo li#bar add 2 (1 for each id), giving you 0,2,0,0.
ol#foo li#bar a[target] add 1, giving you 0,2,1,0.
ol#foo li#bar a[target] add 3 (1 for each element name), giving you 0,2,1,3.
When comparing two selectors' specificity, start with the left-most numbers. If one has a higher number than the other, than it is more specific. If they are the same, look to the next number and so on.
Like this CSS tutorial? Try our self-paced online CSS course, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
Web designers can define style rules in three different places:
Embedded style sheets appear in the style element in the head of an
HTML page. The code below shows a page with an embedded style sheet.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Embedded Style Sheet</title>
<style type="text/css">
.warning {color:#ff0000}
h1.warning {text-decoration:underline}
p.warning {font-weight:bold}
</style>
</head>
<body>
<h1 class="warning">WARNING</h1>
<p class="warning">Don't go there!</p>
</body>
</html>
As you can see, the <style> tag takes the type attribute,
which is used to indicate that this is a CSS style sheet. This page will render
as follows:

External style sheets are created in separate documents with a ".css" extension. An external style sheet is simply a listing of rules. It cannot contain HTML tags. CrashCourse/Demos/Stylesheet.css is an example of an external style sheet.
.warning {color:#ff0000}
h1.warning {text-decoration:underline}
p.warning {font-weight:bold}
The above CSS file can be included in any number of HTML pages. The <link>
tag, which goes in the head of an HTML page, is used to link to an external style
sheet.
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>External Style Sheet</title> <link href="StyleSheet.css" rel="stylesheet" type="text/css"> </head> <body> <h1 class="warning">WARNING</h1> <p class="warning">Don't go there!</p> </body> </html>
| Attributed | Description |
|---|---|
href
|
points to the location of the external style sheet |
rel
|
must be set to "stylesheet" for linking style sheets |
type
|
must be set to "text/css" for linking to cascading style sheets |
There is no limit to the number of external style sheets a single HTML page can use. Also, external style sheets can be combined with embedded style sheets.
Inline styles are created by adding the style attribute to a tag. As
with the class and id attributes, almost all elements can take the style attribute. The value of the style attribute
is a list of one or more property-value pairs separated by semi-colons. The code
sample below illustrates how inline styles are used.
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>Inline Styles</title> </head> <body> <p style="color:blue; font-weight:bold; font-size:12pt">Common Greetings</p> <ul style="margin-top:-20px; font-size:10pt"> <li style="list-style-type:square">Hello</li> <li style="list-style-type:circle">Hi</li> <li style="list-style-type:disc">Howdy</li> </ul> </body> </html>
This page will render as follows.
Like this CSS tutorial? Try our self-paced online CSS course, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
Styles can be defined for different media. For example, you may want to style a page one way for viewing with a browser and a different way for viewing in print. The media type is defined in the <link> tag for external style sheets and in the <style> tag for embedded style sheets.
<link href="stylesheet.css" rel="stylesheet" type="text/css" media="screen"> <style type="text/css" media="all"> /* rules */ </style>
If the media is undefined then the style rules will apply to all media. Possible values for media are:
The following code sample illustrates how you can use CSS to design for different media.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>CSS Media</title>
<style type="text/css" media="screen">
.warning {color:#ff0000}
h1.warning {text-decoration:underline}
p.warning {font-weight:bold}
.printDisplay {display:none}
</style>
<style type="text/css" media="print">
.warning {color:#660000;}
h1.warning {text-decoration:underline; font-size:1in;}
p.warning {font-weight:bold; font-size:.5in;}
.screenDisplay {display:none}
</style>
</head>
<body>
<h1 class="warning">WARNING</h1>
<p class="warning">Don't go there!</p>
<p class="printDisplay">This is the print version.</p>
<p class="screenDisplay">This is the screen version.</p>
</body>
</html>
As shown below, the screen output of the file above is different from the print output.
The screen output will look like this:
The print output will look like this:
Like this CSS tutorial? Try our self-paced online CSS course, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
The <div> and <span> tags are used in conjunction with Cascading Style Sheets. By themselves, they do very little. In fact, the <span> tag has no visual effect on its contents. The only effect of the <div> tag is to block off its contents, similar to putting a <br> tag before and after a section on the page.
Like most tags, the <div> and <span> tag can take the class, id, and style attributes. It is through these attributes that styles are applied to the elements. The tags are used like any other HTML tags and can be nested within each other any number levels.
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>Div and Span</title> </head> <body> <div style="position:absolute; left:0px; top:0px; font-family:Verdana; font-size:10pt; border-style:groove; border-width:30px; border-color:blue; padding:4px"> This text appears in the <span style="font-style:italic; color:red">upper-left hand corner</span> of the page.<br> It also has a big blue groovy border around it. </div> </body> </html>
This page will render as follows.
Like this CSS tutorial? Try our self-paced online CSS course, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
CSS allows you to specify font size, border size, margins, padding, etc. using many different units of measurement. The table below shows the units available.
| Unit | Description | Example |
|---|---|---|
px
|
Pixels |
margin-top: 10px;
|
pt
|
Points |
font-size: 12pt;
|
in
|
Inches |
padding-top: .5in;
|
cm
|
Centimeters |
top: 5cm;
|
mm
|
Millimeters |
left: 45mm;
|
pc
|
Picas |
bottom: 12pc;
|
em
|
Ems |
font-size: 1.5em;
|
ex
|
Exs |
font-size: 1.5ex;
|
%
|
Percentage |
width: 80%;
|
The measurement unit most often used for designing web pages is pixels. A pixel is not an absolute measurement like, for example, an inch or a point. The actual size of a pixel depends on the resolution and size of a user's monitor. Consider an image that is 900 pixels wide. If the monitor resolution is set to 800 by 600 pixels, then the image will not fit on the screen. However, if the monitor resolution on the same computer is set to 1024 by 768 pixels, the image will fit with room to spare.
Points should be reserved for print. There are 72 points in an inch.
Although these are the most common units of measurement in life, they should be avoided in Web design.
Picas should be reserved for print. There are 6 picas in an inch.
An em (or Mutt) is a relative unit that refers to the size of the letter "M" in a font. Because em is a relative rather than absolute measurement, it is often used in Web design.
The "x-height" is the height of font's lowercase "x". Exs are used to set the size of content based on the size of the surrounding font.
Like this CSS tutorial? Try our self-paced online CSS courses, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
Many properties take the value "inherit". This specifies that the property value should be inherited from the parent element. If a property is left undefined, the implicit value is "inherit".
To illustrate, look at the following:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Inherit</title>
<style>
p {
font-style:none;
}
em {
font-style: inherit;
text-decoration:underline;
}
</style>
</head>
<body>
<p>Even the word <em>inherit</em> isn't italicized.</p>
</body>
</html>
The rule for p sets the font-style of paragraphs to none, which means plain, non-italicized text. We don't really have to do this as the default value for font-style for paragraphs is none.
The rule for em sets the font-style for emphasized text, which is usually italic, to inherit. That means that, in the HTML below the CSS, the em tag will inherit the none value from the containing p tag. We also set the text-decoration property to underline, so we can still see that the tag's content is emphasized:
The @import rule is used to import one style sheet into another. There are two syntaxes for using @import:
@import "styles.css" mediatypes;
@import url("styles.css") mediatypes;
In the examples above, mediatypes would be replaced by a comma-delimited list of media types (as discussed in the earlier reading in the lesson) to which the imported style sheet applies.
In general, you should avoid using @import due to performance reasons, as described in an article called don?t use @import written by Steve Souders.
Like this CSS tutorial? Try our self-paced online CSS course, which includes videos and exercises in addition to the content in this CSS tutorial. Not sure if you want to pay for that? Register for a free demo of the course.
This page was last updated on 2013-01-03
All pages and graphics in this CSS Tutorial is copyright 2013 and are the property of Webucator, Inc. unless otherwise specified. The purpose of this website is to help you learn CSS on your own and use of the website implies your agreement to our Terms of Service.