Top Banner
CSS: CSS: Cascading Style Cascading Style Sheets Sheets
63

CSS: Cascading Style Sheets

Jan 11, 2016

Download

Documents

cullen

CSS: Cascading Style Sheets. History. HTML tags were originally designed to define the content of a document. The layout of the document was supposed to be taken care of by the browser, without using any formatting tags. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CSS: Cascading Style Sheets

CSS:CSS:

Cascading Style SheetsCascading Style Sheets

Page 2: CSS: Cascading Style Sheets

2

HistoryHistory

• HTML tags were originally designed to define the content of

a document.

• The layout of the document was supposed to be taken care

of by the browser, without using any formatting tags.

• As the two major browsers - Netscape and Internet Explorer

continued to add new HTML tags and attributes (ex: <font>

tag, color attribute) to the original HTML specification, it

became more and more difficult to create Web sites where

the content of HTML documents was clearly separated from

the document's presentation layout.

Page 3: CSS: Cascading Style Sheets

3

What are Style SheetsWhat are Style Sheets

• A style sheet is a mechanism that allows to

specify how HTML (/XHTML/XML) pages

should look.

• The style is specified by style rules.

• The style rules appear either in the document or

in external files, called style sheets.

Page 4: CSS: Cascading Style Sheets

4

Style SheetsStyle Sheets

• A file that ends with .css

• Contains a list of style rules for HTML elements

• Case insensitive

• Comments are enclosed in /* */

• Demo:

http://www.w3schools.com/css/demo_default.htm

Page 5: CSS: Cascading Style Sheets

5

Without a style sheet

Page 6: CSS: Cascading Style Sheets

6

Simple ExampleSimple Example

<html>

<head><title>A Joke</title></head>

<body>

<div><img src="tomato.gif" alt="joke"/></div>

<h1>A joke</h1>

<p>A mama tomato, a papa tomato and a baby tomato are walking

down the street. The baby tomato keeps falling behind so the papa

tomato goes back, steps on the baby tomato and says, ketchup

("Catch-up!"). </p>

</body>

</html>

The <div> tag defines a

division/section in a document.

Page 7: CSS: Cascading Style Sheets

7

Page 8: CSS: Cascading Style Sheets

8

Style File: Style File: joke.cssjoke.css

body {

background-image: url("water.jpg"); }

h1 {

background-color: green;

color: rgb(250, 200, 250); /* pink */

font-family: cursive }

p {

background-color: yellow;

color: purple;

font-size: 200%;}

Page 9: CSS: Cascading Style Sheets

9

Simple Example (with css)Simple Example (with css)

<html>

<head><title>A Joke</title>

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

</head>

<body>

<div><img src="tomato.gif" alt="joke"></div>

<h1>A joke</h1>

<p>A mama tomato, a papa tomato and a baby tomato are walking

down the street. The baby tomato keeps falling behind so the papa

tomato goes back, steps on the baby tomato and says, ketchup

("Catch-up!"). </p> </body>

</html>

Page 10: CSS: Cascading Style Sheets

10

Page 11: CSS: Cascading Style Sheets

11

Why do we Need a Style Sheet?Why do we Need a Style Sheet?

• Separates content from format

• In HTML 4.01 styling is very limited

• Consistent appearance over a site

• Allows to easily change style

- In one page

- In a whole site

• Reduces download time (how?)

the same style sheet may

apply to many pages in a

website reduces the

need to send redundant

presentation information

over the network

Page 12: CSS: Cascading Style Sheets

Inserting Style to a PageInserting Style to a Page

Page 13: CSS: Cascading Style Sheets

13

How and Where?How and Where?

• The style rules appear either in the document or

in external files, called style sheets

- Inside a document, there are inline styles and

embedded style sheets

- External style sheets are either linked or

imported

Page 14: CSS: Cascading Style Sheets

14

Inline StylesInline Styles

• The style declaration appears as the value of the

attribute style of the element

• Almost every tag can have the style attribute

- Some exceptions: head, html, meta, style and title

• Use this method sparingly, such as when a style

is to be applied to a single occurrence of an

element.

<p style="color: green; font-size: 1.5em; font-style: italic">

This text will be shown in italic green and the size will be 1.5 times the current font size </p>

Page 15: CSS: Cascading Style Sheets

15

<html> <head>

<style type="text/css">

body {color: red; background: skyblue;}

h1 { color: blue }

</style>

</head>

<body>... </body>

</html>

Embedded StyleEmbedded Style

Inside the head element

•Use when a single document has a unique style.

Page 16: CSS: Cascading Style Sheets

16

Link External Style SheetsLink External Style Sheets

<html> <head>

<link rel="stylesheet" type="text/css"

href="mystyle.css" />

</head>

<body>... </body>

</html>

Inside the head element

• Ideal when the style is applied to many pages.

Page 17: CSS: Cascading Style Sheets

17

• The @import rule imports style rules to the beginning of

the style sheet

• The @import rule imports the style rules of another

style sheet

• Several import rules may appear

Imported Style SheetsImported Style Sheets

@import url(general.css);

body { color: red; background:skyblue }

h1 { color: blue }An Example:

Page 18: CSS: Cascading Style Sheets

Style SyntaxStyle Syntax

Page 19: CSS: Cascading Style Sheets

19

Style RulesStyle Rulesh1 {

color: purple;

font-family: Impact, Arial Black;

font-size-adjust: .46;

font-size: 2.33em;

font-weight:400;

font-style:normal;

text-decoration: none;

word-spacing:normal

letter-spacing:normal;

text-transform: none; }

Declaration

Property

Value(s)

Selector

Page 20: CSS: Cascading Style Sheets

20

Style Rules (cont)Style Rules (cont)

• A rule has the following form:

selector {property: value}

- Selector: HTML element/tag to define

- Property: attribute to change

- Value: value given to the property

• For example, the following rule applies to text

that is inside a <p> tag

p {color: green; font-size: 1.5em; font-style: italic}

em: the 'font-size' of the relevant font

Page 21: CSS: Cascading Style Sheets

21

What Kind of Properties can a CSS What Kind of Properties can a CSS Style Sheet Change?Style Sheet Change?

• Style properties

• Layout properties

• There are many properties and many possible

values

- We will not cover all of them here (list, table, border)

- Everything is in the Web !

- A good source: http://www.w3schools.com/css

Page 22: CSS: Cascading Style Sheets

Style PropertiesStyle Properties

Page 23: CSS: Cascading Style Sheets

23

Our ExamplesOur Examples

• We use the following HTML example:

This is <span> our example </span> for css.

• The <span> tag is used to group elements for

formatting with styles

- Extremely useful tag...

Page 24: CSS: Cascading Style Sheets

24

Font PropertiesFont Properties

• Font properties: family, size, weight, style,...

span {

font-family: courier;

font-size: 130%;

font-style: italic;

font-weight: bold}

Page 25: CSS: Cascading Style Sheets

25

Text PropertiesText Properties

• Text properties: color, transform, decoration,

word-spacing, text-align, direction, …

span {

color: #00cc00;

text-decoration: line-through;

text-transform: uppercase}

Page 26: CSS: Cascading Style Sheets

26

Background PropertiesBackground Properties

• Background properties: background-color,

background-image, background-repeat, …

span {background-color: #00ff00}

span {background-image: url('bg.gif');}

Page 27: CSS: Cascading Style Sheets

Layout PropertiesLayout Properties

Page 28: CSS: Cascading Style Sheets

28

Page LayoutPage Layout

• Each HTML element defines a layer (rectangular

box) that is placed in some location on the page

• Layers are nested with correspondence to the

nesting of their elements

Page 29: CSS: Cascading Style Sheets

29

Inline vs. Block ElementsInline vs. Block Elements

• There are two types of elements:

- Block elements: p, ol, table, div, h1, etc.

- Inline elements: b, i, a, span, etc.

• Layers of block elements are separated from their

adjacent elements (i.e., a new line before and after),

while inline elements are not

• You can turn a block into an inline or block, using the

display property, e.g., h1 { display: inline }

Page 30: CSS: Cascading Style Sheets

30

Positioning ElementsPositioning Elements

• Using CSS, you can define the position of an element

inside its parent layer

• For that, use the properties position, left, right, top and

bottom

span {

position:relative;

left: 1cm;

top: 1cm;

color: #00cc00;}

Page 31: CSS: Cascading Style Sheets

31

Relative vs. AbsoluteRelative vs. Absolute

• In CSS, positions (of boxes) and sizes (of fonts and boxes) could be either relative or absolute

• In an “absolute” style

- Font size is fixed

- Sizes and positions of elements are fixed

• In a “relative” style

- you can change the font size

- The sizes and positions of elements may change when the size of the window is changed

Page 32: CSS: Cascading Style Sheets

32

Position TypesPosition Types

• But 1cm left of what??

• For that, we have the position property

• Four position types:

- static: the default position

- relative: relative to the static position

- absolute: relative to the parent layer coordinates

- fixed: relative to the window coordinates

Page 33: CSS: Cascading Style Sheets

33

Position ExamplesPosition Examples

span {

position:static;

left: 1cm;

top: 1cm;

color: #00cc00;}

Totally Ignored! This is the

default position type

Page 34: CSS: Cascading Style Sheets

34

Position ExamplesPosition Examplesspan {

position:absolute;

left: 1cm;

top: 1cm;

color: #00cc00;}

span {

position:fixed;

left: 1cm;

top: 1cm;

color: #00cc00;}

Page 35: CSS: Cascading Style Sheets

35

More Layout PropertiesMore Layout Properties

• Layer properties

- margin (-top, -bottom, -left, -right) • Defines the space around elements

- border (-width, -color, -style, … )• Defines the border around an element

- padding (-top, -bottom, -left, -right)• Defines the space between the element border and the element content

• Text Layout

- direction, word-spacing, white-space, letter-spacing, line-

height, text-align, text-indent, …

Page 36: CSS: Cascading Style Sheets

36

Length UnitsLength Units

• CSS has several types of length units:

- em, ex: height of current fonts (relative)

- px, in, cm, mm, pt, pc: international units

- %: ratio of parent’s respective dimension

• A page should remain a proper layout when

windows (and even fonts) resize

- Hence, do not assume anything about default sizes,

always check

Page 37: CSS: Cascading Style Sheets

Selector TypesSelector Types

Page 38: CSS: Cascading Style Sheets

38

Several Kinds of SelectorsSeveral Kinds of Selectors

• Type Selectors

• Class Selectors

• ID Selectors

• Attribute Selectors

• Universal Selector

• Descendant Selectors

• Pseudo-Class Selectors

• Pseudo-Element Selectors

Page 39: CSS: Cascading Style Sheets

39

Type SelectorType Selector

• A type selector is the name of an element type

• A type selector matches every instance of the

element typeLI {color: red; font-size: 16px}

Matches:<ol>

<li> An item </li>

<li class="reditem"> Another item </li>

</ol>

Page 40: CSS: Cascading Style Sheets

40

Class SelectorClass Selector

• A class selector is a selector of the form x.y

• It matches xs that have the class attribute with

value yLI.reditem {color: red}

Matches:<ol>

<li> An item </li>

<li class="reditem"> Another item </li>

</ol>

.reditem { color: red} will also work!

Page 41: CSS: Cascading Style Sheets

41

ID SelectorsID Selectors

• IDs are identical to classes, except that there can only be

one element with a given ID in a document

LI#23 {color: red}

Matches:<ol>

<li> An item </li>

<li id="23"> Another item </li>

</ol>

#23 { color: red} will also work!

Page 42: CSS: Cascading Style Sheets

42

Attribute SelectorsAttribute Selectors

• p[attribute]

- matches p when attribute is set to any value

• p[title=intro] or p[title="intro"] (the quotes are optional)

- matches p when its title attribute is set to “intro”

• p[class~=green]

- matches p when the class attribute value includes the

word “green”

Page 43: CSS: Cascading Style Sheets

43

Universal SelectorUniversal Selector

• The universal selector matches every element

• The following rule means that all the text will have a

size of 40px

* {font-size: 40px }

Page 44: CSS: Cascading Style Sheets

44

Descendant SelectorDescendant Selector

• A descendant selector has the form S1 S2 where

S1 and S2 are selectors

• It matches all elements that

- match S2, and

- are descendants (nested in) elements that match S1

Page 45: CSS: Cascading Style Sheets

45

An ExampleAn Example

.reditem em {color: blue}

Matches: This is <em>not blue</em>.

<p>

This is <em> blue </em>

<span><i>and so is <em> this </em></i></span>.

</p>

What will this match?

p em {color: blue}

Page 46: CSS: Cascading Style Sheets

46

Pseudo-ClassesPseudo-Classes

• Pseudo class selectors are similar to class

selectors, but they match states rather than class

values

- For example, a link can be in the states: visited,

active, mouse-over (“hover”), etc.

- Another example: a text-area can be focused

Page 47: CSS: Cascading Style Sheets

47

Examples of Rules for Examples of Rules for Pseudo-ClassesPseudo-Classes

• A:link {color: blue}

• A:visited {color: purple}

• A:hover {font-size: 1.5em}

• A:active {color: red}

• INPUT:focus {background-color: yellow}

Page 48: CSS: Cascading Style Sheets

48

• The syntax of pseudo-elements:

selector:pseudo-element {property: value}

• CSS classes can also be used with pseudo-

elements:

selector.class:pseudo-element {property: value}

Pseudo-ElementsPseudo-Elements

Page 49: CSS: Cascading Style Sheets

49

Grouping SelectorsGrouping Selectors

• We can group several declarations by specifying

several selectors, separated by commas

• For example, the following rule applies to all

elements that match either H1, P B, or

H2[class=largehead]

P B, H1, H2.largehead {font-size: 120%}

Page 50: CSS: Cascading Style Sheets

50

Adding Style to Inner TextAdding Style to Inner Text

• We want to add style to a fragment of some text

• We need to wrap the text with tags that do not

have a style of their own:

- <SPAN> Some text </SPAN> : does not stop the

text flow

- <DIV> Some text </DIV>: separated from the

other text

Page 51: CSS: Cascading Style Sheets

Cascading and Inheritance Cascading and Inheritance

Page 52: CSS: Cascading Style Sheets

52

Cascading of StylesCascading of Styles

• CSS merges style rules from different places

(inline, embedded, linked and defaults)

• Different places may have conflicting style rules

- conflicts may even arise in a single source

• The process of merging (cascading) styles from

different places determines which style rules

have higher priority

Page 53: CSS: Cascading Style Sheets

53

Determining Property ValuesDetermining Property Values

• Suppose that we would like to determine the value of

property p for element e

• Choose all declarations that have a selector that matches

e and have the property p

• Choose the first declaration in the cascading order, and

apply the corresponding rule

Page 54: CSS: Cascading Style Sheets

54

Cascading OrderCascading Order

The cascading order of declarations:

1. Primary sort: weight and origin

2. Secondary sort: class

3. Third sort: specificity of selectors

4. Final sort: order of appearance

Page 55: CSS: Cascading Style Sheets

55

Weight and OriginWeight and Origin

A style defined “closer” to a tag takes precedence:

• Author style sheets override user style sheets

• User style sheets override default (browser) style

sheets http://www.squarefree.com/userstyles/user-style-sheets.html

• !important declaration overrides normal declaration- body { color: black !important; background: white !important;}

• If both author and user declarations have !important,

the author declarations still override the user

declarations

Page 56: CSS: Cascading Style Sheets

56

Example (sort by class)Example (sort by class)

• Consider the two rules

- P {…}

- .introductory {…}

• If an element matches both, then the second rule

has a higher specificity and overrides the first

Page 57: CSS: Cascading Style Sheets

57

An Example (specificity of selectors)An Example (specificity of selectors)

• Consider the following rules:

- li {…}

- #34 {…}

- ul ol li.red {…}

• Which is the most specific?

…there can only be one element with a given ID in a document

Page 58: CSS: Cascading Style Sheets

58

Order of AppearanceOrder of Appearance

• If two rules have the same origin importance and

specificity, then the one that appears last in the

style sheet overrides the others

• Rules in imported style sheets (@import) are

considered to appear before local rules

Page 59: CSS: Cascading Style Sheets

59

Inheritance of PropertiesInheritance of Properties

• If an element does not match any rule for some

given property, then the element inherits the

computed value for that property from its parent

element

• For example, color, font and word-spacing are

inherited

Page 60: CSS: Cascading Style Sheets

60

An Example (1)An Example (1)

• Given the rules:

- body { font-size: 10pt }

- h1 { font-size: 120% }

• What will be the font size of the <em> element?

<body>

<h1>A <em>large</em> heading</h1>

</body>

Computed Value: 12pt

Page 61: CSS: Cascading Style Sheets

61

An Example (2)An Example (2)

• Given the rules:

- body { font-size: 10pt; color=red; }

- h1 { font-size: 120% }

• What will be the font color of the <h1> element?

<body>

<h1>A red heading ? </h1>

</body>

Page 62: CSS: Cascading Style Sheets

62

Inheritance of PropertiesInheritance of Properties

• 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. 

Example:

Result (properties for h3 in the document): color :redtext-align : rightfont_size:20 pt

external: H3 { color : red;

text-align : left;font-size : 8 pt; }

internal: H3 {

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

Page 63: CSS: Cascading Style Sheets

63

The End!The End!• These slides are based on those developed for the

course: http://www.cs.huji.ac.il/~dbi

• More information about CSS can be found at:

http://www.w3schools.com/css/default.asp

http://www.htmlhelp.com/reference/css/

http://www.htmlgoodies.com/beyond/css/

• Colors: very useful for styling!

http://www.w3schools.com/css/css_colors.asp

http://www.w3schools.com/css/css_colorsfull.asp

http://www.w3schools.com/css/css_colornames.asp