57
Cascading Style Sheets Cascading Style Sheets (CSS) (CSS)

Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

Cascading Style SheetsCascading Style Sheets(CSS)(CSS)

Page 2: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 2

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 3: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 3

Style SheetsStyle Sheets

• Usually, a file that ends with .css

• For example:– i.a.cnn.net/cnn/.element/ssi/css/1.1/main.css (CNN)– http://www.huji.ac.il/styles/style.css (HUJI)

• To attach a style sheet to an HTML file, add <link rel="stylesheet" type="text/css" href="css-file"/>

to the headYou can link to more

than one css file

Page 4: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

Without a style sheet(i.e., with the default

style definitions)

Page 5: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 5

Simple Example – without cssSimple Example – without css

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

div defines a division/section in a

document.Using div you group

elements.

Page 6: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 6

Page 7: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 7

Style File: Style File: joke.cssjoke.css

body {

background-image: url("bg.gif"); }

h1 {

background-color: green;

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

font-family: cursive }

p {

background-color: yellow;

color: purple;

font-size: 200%;}

Page 8: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 8

Simple Example - with cssSimple 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 9: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 9

Page 10: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 10

Background: Style in Legacy HTMLBackground: Style in Legacy HTML

• In traditional HTML, every HTML tag which supported changing its font/color/etc…, supported this using a different syntax

• Examples:<body background=“bg.jpg” vlink =“green”>

<center>Hello</center>

<font size="3" color="red">Hey!</font>

<strike>line-through</strike> <table border=“1px”>

Page 11: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 11

Advantages of Style SheetsAdvantages of Style Sheets

• Separates content from style– Often require two kinds of skills; moreover, one is likely to

change independently from the other

• Keeps HTML pages human-readable

• Reduces download time (how?)

• Allows to easily maintain a consistent appearance over a whole Web site (why?)

• A more flexible, unified way to specify style properties for different HTML elements (tables, paragraphs, etc…)

Page 12: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 12

The Transition to Style SheetsThe Transition to Style Sheets

• Style Sheets provide new ways to accomplish tasks which were already possible– … but recall the advantages from the previous slide

• Once style sheets were introduced, most of the legacy features with equivalent functionality were deprecated in HTML 4.01 and in Transitional XHTML and were removed in Strict XHTML

Page 13: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 13

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 !important;

letter-spacing:normal;

text-transform: none; }

Declaration

Property

Value(s)

Selector

“important”rule

Page 14: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 14

Style Rules (cont)Style Rules (cont)

• A rule has the following form

selector {declaration block}

• The selector determines when the rule is applied

• 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 is the current font-size of the element

Page 15: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 15

Properties that CSS ControlsProperties that CSS Controls

• Style properties

• Layout properties

• There are many properties and many

possible values– We will not cover all of them here

– Look in the Web !!!

Page 16: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

Style PropertiesStyle Properties

Page 17: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 17

Our ExamplesOur Examples

• We use the following HTML example: This is <span> our example </span> for css.

• The <span> tag is used to group inline elements for formatting with styles– Extremely useful tag...

Page 18: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 18

Font PropertiesFont Properties

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

span {

font-family: courier;

font-size: 130%;

font-style: italic;

font-weight: bold}

Enable to transform letters into small-caps

Page 19: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 19

Text PropertiesText Properties

• Text properties: color, transform, decoration, …

span {

color: #00cc00;

text-decoration: line-through;

text-transform: uppercase}

Transforms the letters’

case (upper / lower / capital)

Page 20: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 20

Background PropertiesBackground Properties

• Background properties: background-color, background-image, …

span {background-color: #00ff00}

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

Page 21: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

Layout PropertiesLayout Properties

Page 22: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 22

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 23: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 23

Inline vs. Block ElementsInline vs. Block Elements

• There are two type of elements:

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

• Inline elements: b, i, a, span, cite, 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 and vice-versa (highly useful for img elements, among others), using the display property, e.g., h1 { display: inline }

Page 24: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 24

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;}

distance from left

distance from top

Page 25: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 25

Position TypesPosition Types

• But 1cm left to what??

• For that, we have the position property

• Four position types are supported:– static: the default position– relative: relative to the static position– absolute: relative to the parent layer coordinates– fixed: relative to the window coordinates

(remains at the same position regardless of scrolling)

Page 26: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 26

Position ExamplesPosition Examples

span {

position:absolute;

left: 1cm;

top: 1cm;

color: #00cc00;} span {

position:fixed;

left: 1cm;

top: 1cm;

color: #00cc00;}

Page 27: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 27

Position ExamplesPosition Examples

span {

position:static;

left: 1cm;

top: 1cm;

color: #00cc00;}

Totally Ignored! This is the

default position type

Page 28: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 28

More Layout PropertiesMore Layout Properties

• Layer properties– margin-top (-bottom, -left, -right)

– padding-top (-bottom, -left, -right)

– border-width (-color, -style, … )

• Text Layout– direction, word-spacing, white-space, letter-

spacing, text-align, text-indent, …

A mama tomato, a papa tomato and a baby tomato are walking down the street.

A mama tomato, a papa tomato and a baby tomato are walking down the street.

Padding

margin

Page 29: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 29

Length UnitsLength Units

• CSS has several types of length units:– em, ex: height of current fonts

• ex is the height of “x”, em is the distance between bottoms of two subsequent lines

– px, in, cm, mm, pt, pc: international units– %: ratio of parent’s respective dimension

• A page should remain a proper layout when fonts and/or windows are resized (usually by the user)– Hence, do not assume anything about default sizes

Page 30: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

Selector TypesSelector Types

Page 31: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 31

Several Kinds of SelectorsSeveral Kinds of Selectors

• Type Selectors

• Class Selectors

• ID Selectors

• Attribute Selectors

• Universal Selector

• Child Selectors

• Adjacent-Sibling Selectors

• Descendant Selectors

• Pseudo-Class Selectors

• Pseudo-Element Selectors

Not supported byIE 5, 5.5 and 6.

The good news:supported by IE 7

Page 32: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 32

Type SelectorType Selector

• A type selector is the name of an element type

• A type selector matches every instance of the element type

li {color: red; font-size: 16px}

Matches:<ol>

<li> An item </li>

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

</ol>

Page 33: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 33

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 34: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 34

Attribute SelectorsAttribute Selectors

• p[title]

– matches p when its title 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 35: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 35

Class SelectorClass Selector

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

• It matches xs that have the class attribute with value y (i.e., it is a shorthand for x[class=y])

li.reditem {color: red}

Matches:<ol>

<li> An item </li>

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

</ol>

.reditem {color: red} will also work! (it will match any element with class="reditem”)

Page 36: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 36

ID SelectorsID Selectors

• IDs are similar to classes, except that there can only be one element with a given ID in a document– That is, an ID uniquely identifies an element

li#23 {color: red}

Matches:<ol>

<li> An item </li>

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

</ol>

#23 { color: red} will also work!

Page 37: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 37

Descendant/Child/Sibling SelectorDescendant/Child/Sibling Selector

• A descendant selector has the form S1 S2 where S1 and S2 are (possible complex) selectors

• It matches all elements that– match S2, and

– are descendants (nested in any level in) elements that match S1

• To match only immediate descendants (children), use a Child Selector S1 > S2

• To match S2 immediately following S2, use an Adjacent-Sibling Selector S1 + S2

Page 38: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 38

An ExampleAn Example

.head div>span 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}

emphasized text

Page 39: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 39

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 40: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 40

Examples of Rules for Pseudo-ClassesExamples of Rules for Pseudo-Classes

• a:link {color: blue}

• a:visited {color: purple}

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

• a:active {color: red}

• input[type=text]:focus {background-color: yellow}

when typing a text into a text input box (meaningful with other input types as well)

Page 41: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 41

Pseudo-ElementsPseudo-Elements

• Pseudo element selectors select abstract elements which are not specified as elements in the source HTML– For example, to transform the first line of every p

into uppercase, use:

P:first-line {text-transform: uppercase}

• Why can’t this be faked by enclosing the first line with a span?

• Example 2: p.article:first-letter {color:#ff0000}

Page 42: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 42

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 43: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

Inserting Style to a PageInserting Style to a Page

Page 44: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 44

Inline StylesInline Styles

• In an inline style, the declaration block is the value of the attribute style of the element

• Almost every tag can have the style attribute– exceptional: base, head, html, meta, param, script,

style and title

<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 45: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 45

Document-Level StyleDocument-Level Style

<html> <head>

<style type="text/css">

body {color: red; background: skyblue;}

h1 { color: blue }

</style>

</head>

<body>... </body>

</html>

Page 46: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 46

Imported Style SheetsImported Style Sheets

• The @import rule imports the style rules of another style sheet

• Usage: @import url(file.css)

• Several import rules may appear at the beginning of the style sheet

• Import rules can appear in embedded style sheets or in external style sheets

Page 47: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 47

Imported Style SheetsImported Style Sheets

Why do we need the import command when

we have the <link> tag?

@import url(general.css);

body { color: red; background:skyblue }

h1 { color: blue }

An Example:

Using @import in a css file, one can create style-sheets which are

based on others…

Page 48: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

Inheritance and CascadingInheritance and Cascading

Page 49: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 49

Inheritance of PropertiesInheritance of Properties

• Consider a property of an element that does not match any rule

• For some properties (inherited properties), the computed value of this property is inherited from the parent of the element

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

• Yet border, margin and padding are not!

Page 50: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 50

An ExampleAn Example

• 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 51: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 51

Cascading of StylesCascading of Styles

• CSS merges style rules from different places (inline, document-level, 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 52: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 52

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

• “Sort” all declarations according to cascading order (importance)

• Apply the rule of the first declaration in the cascading order

Page 53: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 53

Cascading OrderCascading Order

The cascading order of declarations:

1. Primary sort: Importance of originorigin

2. Secondary sort: Specificity Specificity of selectors

3. Final sort: Order Order of appearance

Page 54: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 54

Importance of OriginImportance of Origin

• There are two origins of rules: author and browser (defaults / user customizations)

browser !important rules

author !important rules

author rules

browser rules

strongest

weakest

For example, you can add stylesheets to IE in the following way:

Tools

internet options

Accessibility

User style sheet.

Of course you can add !important browser rules this way as well…

Page 55: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 55

Specificity of SelectorsSpecificity of Selectors

is rule in style attribute?

number of ID attributes

number of attributes and pseudo-classes

number of element names

strongest

weakest

Page 56: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 56

An ExampleAn Example

Which is the most specific?

li {…}

#x34y {…}

ul ol li.red {…}

1

2

3

Page 57: Cascading Style Sheets (CSS). DBI 2008 HUJI-CS 2 What are Style Sheets A style sheet is a mechanism that allows to specify how HTML (/XHTML/XML) pages

HUJI-CSHUJI-CSDBI 2008DBI 2008 57

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 (i.e., their position is less important)