1
Cascading Style Sheets
(CSS)
Part 2
2
The Sources of Style Sheets
Embedded Style Sheets
3
<HTML>
<HEAD>
<STYLE type="text/css">
<!--
BODY {color: red}
--> </STYLE>
</HEAD>
<BODY>
...
</BODY>
</HTML>
The embedded style sheet appears in the header inside a
<STYLE> element.
All the text of the style sheet is inside an HTML comment so that browsers that do not support CSS will ignore the text.
4
Inline Styles
• Any tag, except the <HTML> tag itself, can have the style attribute
• For example, the following will define the color of the paragraph to be green
<P style="color: green"> and this is green </P>
5
Imported Style Sheets
• The @import rule imports style rules to the beginning of the style sheet
• Usage: @import url(nameOfFile.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
Linked Style Sheets
• Links to external style sheets can appear in the header of an HTML page
<HTML>
<HEAD>
<LINK rel="stylesheet" type="text/css ” href= “name.css“ media=“print handheld ”>
</HEAD>
<BODY>
...
</BODY>
6
</HTML>
7
Inheritance and Cascading
Inheritance of Properties
8
• If an element does not match any rule for some given property, then that property either
has an initial value, or
inherits the value from the parent of the element
• The CSS2 Specification determines which properties are inherited, for example
font-size is inherited background-color is not inherited – its initial value is transparent
9
Computed Values are Inherited
• When a property is inherited, the computed value (and not a relative value) is inherited
• See the example on next the slide
Example
• Given the rules:
BODY { font-size: 10pt }
H1 { font-size: 120% }
• What will be the font size of the EM element in the following HTML segment?
<BODY>
<H1>A <EM>large</EM> heading</H1>
</BODY>
10
11
Cascading Order
• When several rules define the same property and match the same element, then the cascading order is as follows:
Primary sort: weight and origin
Secondary sort: specificity of selectors
Final sort: order of appearance
• The cascading order determines which rule applies
12
Weight and Origin
• Author style sheets override user style sheets
•
• User style sheets override default (browser) style sheets
! important declaration overrides normal declaration
• If both author and user declarations have
! important , the user declarations still override the author declarations (in CSS2, but not in
CSS1)
Specificity of a Selector
• Let a be the number of ID attributes in the given selector
• Let b be the number of attributes and pseudo-classes in the given selector
• Let c be the number of element names in the given selector
• Sort the triples (a,b,c) lexicographically
• Pseudo-elements are ignored
13
14
Example
• Consider the two rules
P {…}
.introductory {…}
• If an element matches both, then the second rule has a higher specificity and overrides the first
15
Order of Appearance
• If two rules have the same weight, origin and specificity, then the one that appears last in the style sheet overrides the others
• Rules in imported style sheets are considered to appear before local rules
16
Lengths and Colors
How to Specify Them
17
Colors
• Colors can be specified as names
Aqua, Black, Blue, Fuchsia, Gray, Green,
Lime, Maroon, Navy, Olive, Purple, Red,
Silver, Teal, White, Yellow
• Colors can be specified as #RRGGBB
Each of RR, GG and BB should be a hexadecimal number ranging from 00 to FF
18
More Ways to Specify Colors
• RGB(rrr,ggg,bbb)
Each of rrr, ggg and bbb should be a decimal number ranging from 0 to 255
• RGB(rrr%,ggg%,bbb%)
Each of rrr, ggg and bbb should be a decimal number ranging from 0 to 100
Lengths
• Lengths can be specified in absolute units
cm, in, mm, pc (6 picas per inch), pt (72 points per inch)
• Length can be specified in relative units
em (the height of the current font), ex (the height of the letter “x” in the current font), px (pixels – relative to the screen resolution and size)
19
20
Using %
• Sometimes it is possible to use % to specify length (it is % of the current value of that property, as determined by inheritance and cascading)
• For example font-size: 200%
21
The Box Model
Elements as Boxes
<p> This is text. </p>
• The element is the yellow area
• The border is the thick black line
• The padding is the area between the element & the border
• The margin is around the border, on the outside
(the dotted line is imaginary)
22
Don’t Be Mislead by the Diagram
<p> This is text. </p>
• The padding has the same background color as the element
• The border can get its own color and style
• The margin is transparent
• Margins may collapse, i.e., adjoining margins of two or more boxes may combine (overlap) to form a single margin
23
Padding Properties
• The following properties determine the width of the padding on each side
padding-top
padding-right
padding-bottom
Alternatively, all four widths can be assigned to the property:
padding-left
• The value is
padding fixed length or % (of the width of the containing box)
• See examples in W3Schools
24
Border Properties
• The properties of the border are
The width (on each side)
• the possible values are
thin, medium, thick, or
length in some units (not %)
The border style
The border color
• See examples in W3Schools
25
26
Margin Properties
• The margin properties are the width on each side
• The value is one of the following:
fixed length
% (of the width of the containing box)
Auto
• See examples in W3Schools
27
Visual Formatting Model
Also Known as “Positioning”
Inline-Level Elements
• Inline-level elements do not start a new line, for example
<EM>
<SPAN>
• Inline-level elements generate inline boxes, which are positioned horizontally
(i.e., side-by-side on the same line until the line is full and then continuing on the next line)
28
29
Block-Level Elements
• Block-level elements start a new line, for example
<P>
<LI>
<DIV>
• Block-level elements generate block boxes, which are positioned vertically
(i.e., each box below the previous one)
The Display Property
• The display property may force an element to become inline-level or blocklevel
• Some possible values of the display property are
inline
block
none
• See example in W3Schools
30
31
Normal Flow
• Normal flow means that boxes are positioned left-to-right, top-to-bottom
• Each block box starts a new line
32
Floats
• A floating box is
first laid out according the normal flow, and
then it is taken out of the normal flow and shifted left or right as far as possible
• The normal flow continues along the side of a floating box
• See example in W3Schools
33
Absolute Positioning
• The declaration position: absolute means that the box is taken out of the normal flow entirely and positioned in some fixed coordinates with respect to the containing block
• See example in W3Schools
• More examples
Relative Positioning
• The declaration position: relative means that the box is first laid out according to the normal flow and then it may be shifted relative to this position
• The next box is laid out as if the previous relative box was not shifted
Relative positioning may cause boxes to overlap
• See example in W3Schools
34
The Clear Property
• The clear property is used to indicate that a box should not be placed next to the side of a float, but rather below that float
• The possible values are:
none (the initial value)
left
right
both
35
36
More Properties that
Effect Positioning
• Clip
• Overflow
• Vertical-align
• V-index
• See examples in W3Schools
37
Media Types
38
Rules for Specific
Media Types
• It is possible to define rules for specific media types
• See example in W3Schools
• The visual formatting model may behave differently for different media types
39
Examples
A Three-Column Design
40
Basic Idea
• Split the page into three column
• Menu on the left
• Main content in the center
• Links (e.g., resources) on the right
• Possibly some additional text is positioned after the three columns
The Rule for the Body
41 body{ background-color: gray; font-family: Tahoma, Verdana, sans-serif; font-size: 400%; color: yellow;
}
42
The Rule for the Left Column
DIV#left{ float: left; width: 20%; height: 300px; background-color: #000066;
}
The Rule for the Center Column
DIV#center{ float: left; width: 60%; height: 350px; background-color: #660000;
}
43
44
The Rule for the Right Column
DIV.right{ float: left; width: 20%; height: 350px; background-color: #006600;
}
45
The Body
<div id="left"> <p> float: left; </p>
</div>
<div id="center"> <p> float: left; </p>
</div>
<div class="right"> <p> float: left; </p>
</div>
46
The Rule for More Text
<div style="position: static">
More text goes here.
…
…
</div>
47
In the Following Examples
• Sometimes the width is in px and sometimes the width is in %
• Sometimes the “More Text” DIV has clear: left
• In the following examples, we vary the value of the position property in each
DIV
48
The Examples
• Example 1 : All positions are static
• Example 2 : All positions are relative
• Example 3 : All DIVs are float: left
• Example 4 : DIV.right is float: right
• Example 5 : The DIV of the “More Text” has clear: left
Two Right Columns
• Example 6 : DIV.right is float: right
• Example 7 : DIV.right is also has margins) float: left (and it
If the width of DIV.right is 20%, it will never fit on the right side, because of the width of the margin
• Change the font size in the examples and see what happens
49