What is CSS?


explanation video

CSS Demo

With CSS, your HTML documents can be displayed using different output styles:

See how it works



Some History

In the beginning, there was only HTML.

HTML tags were originally designed to define the content of a document. They were supposed to say "This is a header", "This is a paragraph", "This is a table", by using tags like <h1>, <p>, <table>, and so on.

The tags could be styled with attributes.

As more attributes (like the font-size, margin, color, width and background-color attributes) were added, it became more and more unwieldy to style the elements.

And it was hard to make a consistent style change across a whole website.

To change the color of the h3 headings when you have 50 of them would be a lot of work.

So, the CSS language was designed to solve this problem.

It is now possible to create Websites where the content of HTML documents was clearly separated from the document's presentation layout.


Style Sheets Can Save a Lot of Work

Styles sheets define HOW HTML elements are to be displayed. Styles are normally saved in external .css files.

External style sheets enable you to change the appearance and layout of all the pages in your web site, just by editing one single CSS document!

CSS is a breakthrough in web design because it allows developers to control the style and layout of multiple web pages all at once.

As a web developer you can define a style for each HTML element and apply it to as many Web pages as you want. To make a global change, simply change the style, and all elements in the website are updated automatically.



Syntax

The CSS syntax is made up of three parts: a selector, a property and a value:

selector {property: value}

The selector is normally the HTML element/tag you wish to define, the property is the attribute you wish to change, and each property can take a value. The property and value are separated by a colon, and surrounded by curly braces:

body {color: black}

Note: If the value is multiple words, put quotes around the value: p {font-family: "sans serif"}

Note: If you wish to specify more than one property, you must separate each property with a semicolon. The example below shows how to define a center aligned paragraph, with a red text color:

p {text-align:center;color:red}

To make the style definitions more readable, you can describe one property on each line, like this:

p {
    text-align: center;
    color: black;
    font-family: arial
}



Grouping

You can group selectors. Separate each selector with a comma. In the example below we have grouped all the header elements. All header elements will be displayed in green text color:

h1,h2,h3,h4,h5,h6
{
color: green
}



A space matters

Do NOT leave spaces between the property value and the units! If you use "margin-left: 20 px" instead of "margin-left: 20px" it will not work properly.



The class Selector

With the class selector you can define different styles for the same type of HTML element. Say that you would like to have two types of paragraphs in your document: one right-aligned paragraph, and one center-aligned paragraph. Here is how you can do it with styles:

p.right {text-align: right}

p.center {text-align: center}

You have to use the class attribute in your HTML document:

<p class="right">

This paragraph will be right-aligned.

<p class="center">:

This paragraph will be center-aligned.

To apply more than one class per given element, the syntax is:

<p class="center bold">

This will apply the classes "center" and "bold" to this paragraph.

You can also omit the tag name in the selector to define a style that will be used by all HTML elements that have a certain class. In the example below, all HTML elements with class="center" will be center-aligned:

.center {text-align: center}

In the code below both the h1 element and the p element have class="center". This means that both elements will follow the rules in the ".center" selector:

<h1 class="center">
This heading will be center-aligned
</h1>

<p class="center">
This paragraph will also be center-aligned.
</p>

Do NOT start a class name with a number! It will not work in Mozilla/Firefox.



The id Selector

You can also define styles for HTML elements with the id selector. The id selector is defined as a #. The style rule below will match the element that has an id attribute with a value of "green":

#green {color: green}

So if there is a <p id="green" >

it will take on the style and its text will be green.

The style rule below will match the p element that has an id with a value of "para1":

p#para1
{
text-align: center;
color: red
}

A specific id can be used once and only once in a given html document.

Do NOT start an ID name with a number! It will not work in Mozilla/Firefox.



CSS Comments

Comments are used to explain your code, and may help you when you edit the source code at a later date. A comment will be ignored by browsers. A CSS comment begins with "/*", and ends with "*/", like this:

/* This is a comment */
p
{
text-align: center;
/* This is another comment */
color: black;
font-family: arial
}


How to Insert an External Style Sheet

An external style sheet is ideal when the style is applied to many pages. With an external style sheet, you can change the look of an entire Web site by changing one file. Each page must link to the style sheet using the <link> tag. The <link> tag goes inside the head section:

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

The browser will read the style definitions from the file style.css, and format the document according to it. Repl.it already has a style.css file, so you just have to link to it, by adding the link element in the head.

CSS is a different language

Inside the style sheet, the language is CSS. So, the file should not contain any html tags. Your style sheet's name should have a .css extension.

An example of a style sheet file is shown below:

hr {color: sienna}
p {margin-left: 20px}
body {background-image: url("images/back40.gif")}


Optional Readings

Multiple Styles Will Cascade Into One

CSS allows style information to be specified in many places. Styles can be specified inside a single HTML element, inside the style element of an HTML page, or in an external CSS file.

Order of Priority

What style will be used when there is more than one style specified for a given property of an HTML element?

Conflicts will be resolved by the following priorities, with the highest priority style winning:

  1. External style sheet
  2. Internal style sheet (inside the <head> tag)
  3. Inline style (inside an HTML element)

So, an inline style (inside an HTML element) has the highest priority, which means that it will override a style declared in the head, or in an external style sheet).


Internal Style Sheet: An internal style sheet should be used when a single document has a unique style.

You define internal styles in the head section by using the <style> tag, like this:

<head>
<style type="text/css">
hr {color: sienna}
p {margin-left: 20px}
body {background-image: url("images/back40.gif")}
</style>
</head>

The browser will now read the style definitions, and format the document according to it.

Inline Styles: An inline style loses many of the advantages of style sheets by mixing content with presentation.

Use this method sparingly, such as when a style is to be applied to a single occurrence of an element. To use inline styles you use the style attribute in the relevant tag. The style attribute can contain any CSS property. The example shows how to change the color and the left margin of a paragraph:

<p style="color: sienna; margin-left: 20px"> This is a paragraph </p>


Multiple Style Sheets

If some properties have been set for the same selector in different style sheets, the values will be inherited from the more specific style sheet.

For example, an external style sheet has these properties for the h3 selector:

h3
{
color: red;
text-align: left;
font-size: 8pt
}

And an internal style sheet has these properties for the h3 selector:

h3
{
text-align: right;
font-size: 20pt
}

If the page with the internal style sheet also links to the external style sheet the properties for h3 will be:

color: red;
text-align: right;
font-size: 20pt

The color is inherited from the external style sheet and the text-alignment and the font-size is replaced by the internal style sheet.

If the page with the internal style sheet also links to the external style sheet the properties for h3 will be:

color: red;
text-align: right;
font-size: 20pt

The color is inherited from the external style sheet and the text-alignment and the font-size is replaced by the internal style sheet.


Read and work your way through the following parts of the Cascading Style Sheets tutorial. Be sure to check the examples.


Due Date: Wednesday, 5/22/24:


Create a web page about a topic that you enjoy or would like to learn more about

Create some organizational/layout structure using a layout table and different elements on the page. This should be new work. You may use your code from Project 7 (Table Layout) as a template, but change the styling and content.

Create an external style sheet.

 

In the style sheet, set the code for the following:

Rubric

Category minus 15 points minus 10 points minus 5 points Full points
Project Requirements Student follows 4 of the bulleted instructions, above. Student follows 5 of the bulleted instructions, above. Student follows 6 of the bulleted instructions, above. Student follows all 7 bulleted instructions, above.
Code Quality Code doesn't run as expected and shows they did not study or understand the learning resources Code displays somewhat as expected, minimal understanding of learning resources Uses somewhat appropriate syntax and correct features. Well formatted, basic understanding of learning resources Easy to understand. Uses appropriate syntax and features to accomplish the task. Shows they studied and understood the learning resources very well
Code Style Code is very hard to read and understand, follows almost no styling guidelines, inconsistent and causes errors Code is not very readable or consistent, but follows some styling guidelines, some errors Code is readable and follows proper style, but is not in an external style sheet Code is in an external style sheet, is readable and follows proper style
Creativity Student does not show basic creative effort (i.e. no addition of content, text/headers/etc) Student shows minimal creativity from base requirement (i.e adds a couple things but not much) Student shows some creativity from base requirement (i.e creates some content, text/headings/etc and some nice styling) Student goes above and beyond base requirement and shows understanding of project (i.e. additional content, styling)