CSS Introduction: Before Your Begin
CSS Introduction: Before Your Begin
Before you begin, it's important that you know Windows or Unix. A working knowledge of Windows
or Unix makes it much easier to learn HTML.
If you are new to HTML and XHTML then I would suggest you to go through our HTML Tutorial or
XHTML Tutorial. Anyone of HTML or XHTML is enough to proceed.
What is CSS?
Cascading Style Sheets, fondly referred to as CSS, is a simple design language intended to simplify
the process of making web pages presentable.
CSS handles the look and feel part of a web page. Using CSS, you can control the color of the text,
the style of fonts, the spacing between paragraphs, how columns are sized and laid out, what
background images or colors are used, as well as a variety of other effects.
CSS is easy to learn and understand but it provides powerful control over the presentation of an
HTML document. Most commonly, CSS is combined with the markup languages HTML or XHTML.
Advantages of CSS:
CSS saves time - You can write CSS once and then reuse same sheet in multiple HTML
pages. You can define a style for each HTML element and apply it to as many Web pages as
you want.
Pages load faster - If you are using CSS, you do not need to write HTML tag attributes
every time. Just write one CSS rule of a tag and apply to all the occurrences of that tag. So
less code means faster download times.
Easy maintenance - To make a global change, simply change the style, and all elements
in all the web pages will be updated automatically.
Superior styles to HTML - CSS has a much wider array of attributes than HTML so you
can give far better look to your HTML page in comparison of HTML attributes.
Multiple Device Compatibility - Style sheets allow content to be optimized for more than
one type of device. By using the same HTML document, different versions of a website can
be presented for handheld devices such as PDAs and cell phones or for printing.
Global web standards - Now HTML attributes are being deprecated and it is being
recommended to use CSS. So its a good idea to start using CSS in all the HTML pages to
make them compatible to future browsers.
These ratified specifications are called recommendations because the W3C has no control over the
actual implementation of the language. Independent companies and organizations create that
software.
NOTE: The World Wide Web Consortium, or W3C is a group that makes recommendations about
how the Internet works and how it should evolve.
CSS Versions:
Cascading Style Sheets, level 1 (CSS1) was came out of W3C as a recommendation in December
1996. This version describes the CSS language as well as a simple visual formatting model for all
the HTML tags.
CSS2 was became a W3C recommendation in May 1998 and builds on CSS1. This version adds
support for media-specific style sheets e.g. printers and aural devices, downloadable fonts, element
positioning and tables.
This tutorial covers both versions CSS1 and CSS2 and teaches you CSS starting from basic concepts
to advanced concepts. So now start from next chapter and finish it till end to become master in
CSS.
CSS Syntax - Selectors
A CSS comprises of style rules that are interpreted by the browser and then applied to the
corresponding elements in your document. A style rule is made of three parts:
Selector: A selector is an HTML tag at which style will be applied. This could be any tag like
<h1> or <table> etc.
Property: A property is a type of attribute of HTML tag. Put simply, all the HTML attributes
are converted into CSS properties. They could be color or border etc.
Value: Values are assigned to properties. For example color property can have value either
red or #F1F1F1 etc.
Here table is a selector and border is a property and given value 1px solid #C00 is the value of that
property.
You can define selectors in various simple ways based on your comfort. Let me put these selectors
one by one.
This is the same selector we have seen above. Again one more example to give a color to all level 1
headings :
h1 {
color: #36CFFF;
}
Rather than selecting elements of a specific type, the universal selector quite simply matches the
name of any element type :
* {
color: #000000;
}
This rule renders the content of every element in our document in black.
ul em {
color: #000000;
}
You can define style rules based on the class attribute of the elements. All the elements having that
class will be formatted according to the defined rule.
.black {
color: #000000;
}
This rule renders the content in black for every element with class attribute set to black in our
document. You can make it a bit more particular. For example:
h1.black {
color: #000000;
}
This rule renders the content in black for only <h1> elements with class attribute set to black.
You can apply more than one class selectors to given element. Consider the following example :
The ID Selectors:
You can define style rules based on the id attribute of the elements. All the elements having that id
will be formatted according to the defined rule.
#black {
color: #000000;
}
This rule renders the content in black for every element with id attribute set to black in our
document. You can make it a bit more particular. For example:
h1#black {
color: #000000;
}
This rule renders the content in black for only <h1> elements with id attribute set to black.
The true power of id selectors is when they are used as the foundation for descendant selectors, For
example:
#black h2 {
color: #000000;
}
In this example all level 2 headings will be displayed in black color only when those headings will lie
with in tags having id attribute set to black.
You have seen descendant selectors. There is one more type of selectors which is very similar to
descendants but have different functionality. Consider the following example:
body > p {
color: #000000;
}
This rule will render all the paragraphs in black if they are direct child of <body> element. Other
paragraphs put inside other elements like <div> or <td> etc. would not have any effect of this rule.
You can also apply styles to HTML elements with particular attributes. The style rule below will
match all input elements that has a type attribute with a value of text:
input[type="text"]{
color: #000000;
}
The advantage to this method is that the <input type="submit" /> element is unaffected, and the
color applied only to the desired text fields.
h1 {
color: #36C;
font-weight: normal;
letter-spacing: .4em;
margin-bottom: 1em;
text-transform: lowercase;
}
Here all the property and value pairs are separated by a semi colon (;). You can keep them in a
ingle line or multiple lines. For better readability we keep them into separate lines.
For a while don't bother about the properties mentioned in the above block. These properties will be
explained in coming chapters and you can find complete detail about properties in CSS References.
Grouping Selectors:
You can apply a style to many selectors if you like. Just separate the selectors with a comma as
given in the following example:
h1, h2, h3 {
color: #36C;
font-weight: normal;
letter-spacing: .4em;
margin-bottom: 1em;
text-transform: lowercase;
}
This define style rule will be applicable to h1, h2 and h3 element as well. The order of the list is
irrelevant. All the elements in the selector will have the corresponding declarations applied to them.
There are four ways to associate styles with your HTML document. Most commonly used methods
are inline CSS and External CSS.
<head>
<style type="text/css" media="...">
Style Rules
............
</style>
</head>
Attributes:
screen
tty
tv
projection
Specifies the device the document will be displayed on. Default value is all.
media handheld
This is optional attribute.
print
braille
aural
all
Example:
<head>
<style type="text/css" media="all">
h1{
color: #36C;
}
</style>
</head>
Attributes:
Example:
An external style sheet is a separate text file with .css extension. You define all the Style rules
within this text file and then you can include this file in any HTML document using <link> element.
<head>
<link type="text/css" href="..." media="..." />
</head>
Attributes:
href URL Specifies the style sheet file having Style rules. This attribute is a required.
screen
tty
tv Specifies the device the document will be displayed on. Default value is all.
media
projection This is optional attribute.
handheld
print
braille
aural
all
Example:
Consider a simple style sheet file with a name mystyle.css having the following rules:
h1, h2, h3 {
color: #36C;
font-weight: normal;
letter-spacing: .4em;
margin-bottom: 1em;
text-transform: lowercase;
}
Now you can include this file mystyle.css in any HTML document as follows:
<head>
<link type="text/css" href="mystyle.css" media="all" />
</head>
<head>
<@import "URL";
</head>
Here URL is the URL of the style sheet file having style rules. You can use another syntax as well:
<head>
<@import url("URL");
</head>
Example:
Following is the example showing you how to import a style sheet file into HTML document:
<head>
@import "mystyle.css";
</head>
<style type="text/css">
<!--
body, td {
color: blue;
}
-->
</style>
CSS Comments:
Many times you may need to put additional comments in your style sheet blocks. So it is very easy
to comment any part in style sheet. You simple put your comments inside /*.....this is a comment in
style sheet.....*/.
You can use /* ....*/ to comment multi-line blocks in similar way you do in C and C++
programming languages.
Example:
Before we start actual exercise, I would like to give a brief idea about the CSS Measurement Units.
CSS supports a number of measurements including absolute units such as inches, centimeters,
points, and so on, as well as relative measures such as percentages and em units. You need these
values while specifying various measurements in your Style rules e.g border="1px solid red".
We have listed out all the CSS Measurement Units alogwith proper Examples:
CSS uses color values to specify a color. Typically, these are used to set a color either for the
foreground of an element(i.e., its text) or else for the background of the element. They can also be
used to affect the color of borders and other decorative effects.
You can specify your color values in various formats. Following table tells you all possible formats:
A hexadecimal value can be taken from any graphics software like Adobe Photoshop, Jasc Paintshop
Pro or even using Advanced Paint Brush.
Each hexadecimal code will be preceded by a pound or hash sign #. Following are the examples to
use Hexadecimal notation.
#000000
#FF0000
#00FF00
#0000FF
#FFFF00
#00FFFF
#FF00FF
#C0C0C0
#FFFFFF
A hexadecimal value can be taken from any graphics software like Adobe Photoshop, Jasc Paintshop
Pro or even using Advanced Paint Brush.
Each hexadecimal code will be preceded by a pound or hash sign #. Following are the examples to
use Hexadecimal notation.
#000
#F00
#0F0
#0FF
#FF0
#0FF
#F0F
#FFF
NOTE: All the browsers does not support rgb() property of color so it is recommended not to use it.
rgb(0,0,0)
rgb(255,0,0)
rgb(0,255,0)
rgb(0,0,255)
rgb(255,255,0)
rgb(0,255,255)
rgb(255,0,255)
rgb(192,192,192)
rgb(255,255,255)
Building Color Codes:
You can build millions of color codes using our Color Code Builder. Check our HTML Color Code
Builder. To use this tool you would need a Java Enabled Browser.
This tutorial will teach you how to set backgrounds of various HTML elements. You can set following
background properties of an element:
<p style="background-color:yellow;">
This text has a yellow background color.
</p>
<table style="background-image:url(/images/pattern1.gif);">
<tr><td>
This table has background image set.
</td></tr>
</table>
Following is the example which demonstrates how to repeat the background image vertically.
<table style="background-image:url(/images/pattern1.gif);
background-repeat: repeat-y;">
<tr><td>
This table has background image set which will repeat vertically.
</td></tr>
</table>
Following is the example which demonstrates how to repeat the background image horizontally.
<table style="background-image:url(/images/pattern1.gif);
background-repeat: repeat-x;">
<tr><td>
This table has background image set which will repeat horizontally.
</td></tr>
</table>
<table style="background-image:url(/images/pattern1.gif);
background-position:100px;">
<tr><td>
Background image positioned 100 pixels away from the left.
</td></tr>
</table>
Following is the example which demonstrates how to set the background image position 100 pixels
away from the left side and 200 pixels down from the top.
<table style="background-image:url(/images/pattern1.gif);
background-position:100px 200px;">
<tr><td>
This table has background image positioned 100
pixels away from the left and 200 pixels from the top.
</td></tr>
</table>
Set the background attachment:
Background attachment determines whether a background image is fixed or scrolls with the rest of
the page.
Following is the example which demonstrates how to set the fixed background image.
<p style="background-image:url(/images/pattern1.gif);
background-attachment:fixed;">
This parapgraph has fixed background image.
</p>
Following is the example which demonstrates how to set the scrolling background image.
<p style="background-image:url(/images/pattern1.gif);
background-attachment:scroll;">
This parapgraph has scrolling background image.
</p>
Shorthand property :
You can use the background property to set all the background properties at once. For example:
This tutorial will teach you how to set fonts of a content available in an HTML element. You can set
following font properties of an element:
<p style="font-family:georgia,garamond,serif;">
This text is rendered in either georgia, garamond, or the default
serif font depending on which font you have at your system.
</p>
<p style="font-style:italic;">
This text will be rendered in italic style
</p>
<p style="font-weight:bold;">
This font is bold.
</p>
<p style="font-weight:bolder;">
This font is bolder.
</p>
<p style="font-weight:900;">
This font is 900 weight.
</p>
<p style="font-size:20px;">
This font size is 20 pixels
</p>
<p style="font-size:small;">
This font size is small
</p>
<p style="font-size:large;">
This font size is large
</p>
This will produce following result:
<p style="font-size-adjust:0.61;">
This text is using a font-size-adjust value.
</p>
<p style="font-stretch:ultra-expanded;">
If this doesn't appear to work, it is likely that
your computer doesn't have a condensed or expanded
version of the font being used.
</p>
If this doesn't appear to work, it is likely that your computer doesn't have a condensed or expanded
version of the font being used.
This tutorial will teach you how to manipulate text using CSS properties. You can set following text
properties of an element:
<p style="color:red;">
This text will be written in red.
</p>
<p style="direction:rtl;">
This text will be renedered from right to left
</p>
T h i s t e x t i s h a v i n g s p a c e b e t w e e n l e t t e r s .
<p style="word-spacing:5px;">
This text is having space between words.
</p>
<p style="text-indent:1cm;">
This text will have first line indented by 1cm
and this line will remain at its actual position
this is done by CSS text-indent property.
</p>
<p style="text-align:right;">
This will be right aligned.
</p>
<p style="text-align:center;">
This will be center aligned.
</p>
<p style="text-align:left;">
This will be left aligned.
</p>
<p style="text-decoration:underline;">
This will be underlined
</p>
<p style="text-decoration:line-through;">
This will be striked through.
</p>
<p style="text-decoration:overline;">
This will have a over line.
</p>
<p style="text-decoration:blink;">
This text will have blinking effect
</p>
<p style="text-transform:capitalize;">
This will be capitalized
</p>
<p style="text-transform:uppercase;">
This will be in uppercase
</p>
<p style="text-transform:lowercase;">
This will be in lowercase
</p>
If your browser supports the CSS text-shadow property, this text will have a blue shadow.
CSS - Images
Images are very important part of any Web Page. Though it is not recommended to include lot of
images but it is still important to use good images wherever it is required.
CSS plays a good role to control image display. You can set following image properties using CSS.
In Mozilla (-moz-opacity:x) x can be a value from 0.0 - 1.0. A lower value makes the element more
transparent (The same things goes for the CSS3-valid syntax opacity:x).
In IE (filter:alpha(opacity=x)) x can be a value from 0 - 100. A lower value makes the element
more transparent.
This tutorial will teach you how to set different properties of a hyper link using CSS. You can set
following properties of a hyper link:
Usually these all properties are kept in the header part of HTML document.
Remember a:hover MUST come after a:link and a:visited in the CSS definition in order to be
effective. Also, a:active MUST come after a:hover in the CSS definition as follows.
<style type="text/css">
a:link {color: #000000}
a:visited {color: #006600}
a:hover {color: #FFCC00}
a:active {color: #FF00CC}
</style>
Now we will see how to use these properties to give different effects to hyperlinks.
<style type="text/css">
a:link {color:#000000}
</style>
<a href="/html/index.htm">Black Link</a>
Black Link
<style type="text/css">
a:visited {color: #006600}
</style>
<a href="/html/index.htm">Click this link</a>
This will produce following link. Once you will click this link, it will change its color to green.
<style type="text/css">
a:hover {color: #FFCC00}
</style>
<a href="/html/index.htm">Bring Mouse Here</a>
This will produce following link. Now you bring your mouse over this link and you will see that it
changes its color to yellow.
<style type="text/css">
a:active {color: #FF00CC}
</style>
<a href="/html/index.htm">Click This Link</a>
This will produce following link. This will change it color to pink when user clicks it.
CSS - Tables
This tutorial will teach you how to set different properties of an HTML table using CSS. You can set
following properties of a table:
The border-collapse Specifies whether the browser should control the appearance of
adjacent borders that touch each other or whether each cell should maintain its style.
The border-spacing Specifies the width that should appear between table cells.
The caption-side Captions are presented in the <caption> element. By default, these are
rendered above the table in the document. You use the caption-side property to control the
placement of the table caption.
The empty-cells Specifies whether the border should be shown if a cell is empty.
The table-layout Allows browsers to speed up layout of a table by using the first width
properties it comes across for the rest of a column rather than having to load the whole
table before rendering it.
<style type="text/css">
table.one {border-collapse:collapse;}
table.two {border-collapse:separate;}
td.a {
border-style:dotted;
border-width:3px;
border-color:#000000;
padding: 10px;
}
td.b {border-style:solid;
border-width:3px;
border-color:#333333;
padding:10px;
}
</style>
<table class="one">
<caption>Collapse Border Example</caption>
<tr><td class="a"> Cell A Collapse Example</td></tr>
<tr><td class="b"> Cell B Collapse Example</td></tr>
</table>
<br />
<table class="two">
<caption>Separate Border Example</caption>
<tr><td class="a"> Cell A Separate Example</td></tr>
<tr><td class="b"> Cell B Separate Example</td></tr>
</table>
If you provide one value it will applies to both vertical and horizontal borders Or you can specify two
values, in which case the first refers to the horizontal spacing and the second to the vertical
spacing:
<style type="text/css">
/* If you provide one value */
table.example {border-spacing:10px;}
/* This is how you can provide two values */
table.example {border-spacing:10px; 15px;}
</style>
<style type="text/css">
table.one {
border-collapse:separate;
width:400px;
border-spacing:10px;
}
table.two {
border-collapse:separate;
width:400px;
border-spacing:10px 50px;
}
</style>
<table class="one" border="1">
<caption>Separate Border Example with border-spacing</caption>
<tr><td> Cell A Collapse Example</td></tr>
<tr><td> Cell B Collapse Example</td></tr>
</table>
<br />
<table class="two" border="1">
<caption>Separate Border Example with border-spacing</caption>
<tr><td> Cell A Separate Example</td></tr>
<tr><td> Cell B Separate Example</td></tr>
</table>
This property can have one of the four values top, bottom, left or right. Let us see following
example to show each value:
<style type="text/css">
caption.top {caption-side:top}
caption.bottom {caption-side:bottom}
caption.left {caption-side:left}
caption.right {caption-side:right}
</style>
This property can have one of the three values show, hide or inherit.
Here is the empty-cells property used to hide borders of empty cells in the <table> element.
<style type="text/css">
table.empty{
width:350px;
border-collapse:separate;
empty-cells:hide;
}
td.empty{
padding:5px;
border-style:solid;
border-width:1px;
border-color:#999999;
}
</style>
<table class="empty">
<tr>
<th></th>
<th>Title one</th>
<th>Title two</th>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty">value</td>
</tr>
<tr>
<th>Row Title</th>
<td class="empty">value</td>
<td class="empty"></td>
</tr>
</table>
This property can have one of the three values fixed, auto or inherit.
NOTE:This property is not supported by many browsers so do not rely on this property.
<style type="text/css">
table.auto
{
table-layout: auto
}
table.fixed
{
table-layout: fixed
}
</style>
<table class="auto" border="1" width="100%">
<tr>
<td width="20%">1000000000000000000000000000</td>
<td width="40%">10000000</td>
<td width="40%">100</td>
</tr>
</table>
<br />
<table class="fixed" border="1" width="100%">
<tr>
<td width="20%">1000000000000000000000000000</td>
<td width="40%">10000000</td>
<td width="40%">100</td>
</tr>
</table>
The border properties allow you to specify how the border of the box representing an element
should look. There are three properties of a border you can change
<style type="text/css">
p.example1{
border:1px solid;
border-bottom-color:#009900; /* Green */
border-top-color:#FF0000; /* Red */
border-left-color:#330000; /* Black */
border-right-color:#0000CC; /* Blue */
}
p.example2{
border:1px solid;
border-color:#009900; /* Green */
}
</style>
<p class="example1">
This example is showing all borders in different colors.
</p>
<p class="example2">
This example is showing all borders in green color only.
</p>
You can individually change the style of the bottom, left, top, and right borders of an element using
following properties:
You can individually change the width of the bottom, top, left, and right borders of an element using
the following properties:
Following is the example to show to use all the three properties into a single property. This is the
most frequently used property to set border around any element.
The margin property defines the space around an HTML element. It is possible to use negative
values to overlap content.
The values of the margin property are not inherited by child elements. Remember that the adjacent
vertical margins (top and bottom margins) will collapse into each other so that the distance between
the blocks is not the sum of the margins, but only the greater of the two margins or the same size
as one margin if both are equal.
The margin A shorthand property for setting the margin properties in one declaration.
The margin-bottom Specifies the bottom margin of an element.
The margin-top Specifies the top margin of an element.
The margin-left Specifies the left margin of an element.
The margin-right Specifies the right margin of an element.
<style type="text/css">
p {margin: 15px}
all four margins will be 15px
</style>
<p style="margin: 10px 2% -10px auto; border:1px solid black;"> top margin will be 10px, right
margin will be 2% of the total width of the document, bottom margin will be -10px, left margin will
be set by the browser
</p>
top and bottom margin will be 10px, left and right margin will be 2% of the total width of the
document.
top margin will be 10px, left and right margin will be 2% of the total width of the document,
bottom margin will be -10px
top margin will be 10px, right margin will be 2% of the total width of the document, bottom
margin will be -10px, left margin will be set by the browser
Lists are very helpful in conveying a set of either numbered or bulleted points. This tutorial teaches
you how to control list type, position, style etc. using CSS
There are following five CSS properties which can be used to control lists:
The list-style-type Allows you to control the shape or appearance of the marker.
The list-style-position Specifies whether a long point that wraps to a second line should
align with the first line or start underneath the start of the marker.
The list-style-image Specifies an image for the marker rather than a bullet point or
number.
The list-style Serves as shorthand for the preceding properties.
The marker-offset Specifies the distance between a marker and the text in the list.
Here are the values which can be used for an unordered list:
Value Description
none NA
Here are the values which can be used for an ordered list:
<ul style="list-style-type:circle;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ul>
<ul style="list-style-type:sqaure;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ul>
<ol style="list-style-type:decimal;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ol>
<ol style="list-style-type:lower-alpha;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ol>
<ol style="list-style-type:lower-roman;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ol>
Maths
Social Science
Physics
Maths
Social Science
Physics
1. Maths
2. Social Science
3. Physics
a. Maths
b. Social Science
c. Physics
i. Maths
ii. Social Science
iii. Physics
Value Description
none NA
If the text goes onto a second line, the text will wrap underneath the marker. It will also
inside
appear indented to where the text would have started if the list had a value of outside.
If the text goes onto a second line, the text will be aligned with the start of the first line (to
outside
the right of the bullet).
<ul style="list-style-type:sqaure;list-style-position:inside;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ul>
<ol style="list-style-type:decimal;list-stlye-position:outside;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ol>
<ol style="list-style-type:lower-alpha;list-style-position:inside;">
<li>Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ol>
Maths
Social Science
Physics
Maths
Social Science
Physics
1. Maths
2. Social Science
3. Physics
a. Maths
b. Social Science
c. Physics
<ul>
<li style="list-style-image: url(/images/bullet.gif);">Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ul>
<ol>
<li style="list-style-image: url(/images/bullet.gif);">Maths</li>
<li>Social Science</li>
<li>Physics</li>
</ol>
Maths
Social Science
Physics
1. Maths
2. Social Science
3. Physics
Maths
Social Science
Physics
A. Maths
B. Social Science
C. Physics
Maths
Social Science
Physics
A. Maths
B. Social Science
C. Physics
CSS - Paddings
The padding property allows you to specify how much space should appear between the content of
an element and its border:
There are following five CSS properties which can be used to control lists:
The value of this attribute should be either a length, a percentage, or the word inherit. If the value
is inherit it will have the same padding as its parent element. If a percentage is used, the
percentage is of the containing box.
You can also set different values for the padding on each side of the box using the following
properties:
<p style="padding: 10px 2% 10px; border:1px solid black;"> top padding will be 10px, left and
right padding will be 2% of the total width of the document, bottom padding will be 10px </p>
<p style="padding: 10px 2% 10px 10px; border:1px solid black;"> top padding will be 10px, right
padding will be 2% of the total width of the document, bottom padding and top padding will be
10px
</p>
top and bottom paddings will be 10px, left and right paddings will be 2% of the total width of the
document.
top padding will be 10px, left and right padding will be 2% of the total width of the document,
bottom padding will be 10px
top padding will be 10px, right padding will be 2% of the total width of the document, bottom
padding and top padding will be 10px
CSS - Cursors
The cursor property of CSS allows you to specify the type of cursor that should be displayed to the
user.
One good usage of this property is in using images for submit buttons on forms. By default, when a
cursor hovers over a link, the cursor changed from a pointer to a hand. For a submit button on a
form this does not happen. Therefore, using the cursor property to change the cursor to a hand
whenever someone hovers over an image that is a submit button. This provides a visual clue that
they can click it.
The table that follows shows possible values for the cursor property:
Value Description
Shape of the cursor depends on the context area it is over. For example an I over text, a
auto
hand over a link, and so on...
default An arrow
e-resize The cursor indicates that an edge of a box is to be moved right (east)
ne-resize The cursor indicates that an edge of a box is to be moved up and right (north/east)
nw-
The cursor indicates that an edge of a box is to be moved up and left (north/west)
resize
se-resize The cursor indicates that an edge of a box is to be moved down and right (south/east)
sw-resize The cursor indicates that an edge of a box is to be moved down and left (south/west)
s-resize The cursor indicates that an edge of a box is to be moved down (south)
w-resize The cursor indicates that an edge of a box is to be moved left (west)
help A question mark or balloon, ideal for use over help buttons
NOTE: You should try to use only these values to add helpful information for users, and in places
they would expect to see that cursor. For example, using the crosshair when someone hovers over a
link can confuse visitors.
<p>Move the mouse over the words to see the cursor change:</p>
<div style="cursor:auto">Auto</div>
<div style="cursor:crosshair">Crosshair</div>
<div style="cursor:default">Default</div>
<div style="cursor:pointer">Pointer</div>
<div style="cursor:move">Move</div>
<div style="cursor:e-resize">e-resize</div>
<div style="cursor:ne-resize">ne-resize</div>
<div style="cursor:nw-resize">nw-resize</div>
<div style="cursor:n-resize">n-resize</div>
<div style="cursor:se-resize">se-resize</div>
<div style="cursor:sw-resize">sw-resize</div>
<div style="cursor:s-resize">s-resize</div>
<div style="cursor:w-resize">w-resize</div>
<div style="cursor:text">text</div>
<div style="cursor:wait">wait</div>
<div style="cursor:help">help</div>
Move the mouse over the words to see the cursor change:
Auto
Crosshair
Default
Pointer
Move
e-resize
ne-resize
nw-resize
n-resize
se-resize
sw-resize
s-resize
w-resize
text
wait
help
CSS - Outlines
Outlines are very similar to the borders but there are few major differences in borders and outlines:
You have seen the border that surrounds every box ie. element, the padding that can appear inside
each box and the margin that can go around them. In this tutorial we will how we can change the
dimensions of boxes.
There are following properties that allow you to control the dimensions of a box.
paragraph is 400 pixels wide and 100 pixels high and here line height is 30pixels.
This paragraph is 400px wide and max height is 10px This paragraph is 400px wide and max
height is 10px This paragraph is 400px wide and max height is 10px This paragraph is 400px
wide and max height is 10px
This paragraph is 400px wide and min height is 200px This paragraph is 400px wide and min
height is 200px This paragraph is 400px wide and min height is 200px This paragraph is 400px
wide and min height is 200px
This paragraph is 200px high and max width is 100px This paragraph is 200px high and max
width is 100px This paragraph is 200px high and max width is 100px This paragraph is 200px
high and max width is 100px This paragraph is 200px high and max width is 100px
The min-width Property:
The min-width property allows you to specify minimum width of a box. The value of the min-width
property can be a number, a length, or a percentage.
This paragraph is 100px high and min width is 400px This paragraph is 100px high and min
width is 400px This paragraph is 100px high and min width is 400px This paragraph is 100px
high and min width is 400px This paragraph is 100px high and min width is 400px
CSS - Scrollbars
There may be a case when an element's content might be larger than the amount of space allocated
to it. For example given width and height properties did not allow enough room to accommodate the
content of the element.
CSS provides a property called overflow which tells the browser what to do if the box's contents is
larger than the box itself. This property can take one of the following values:
Value Description
visible Allows the content to overflow the borders of its containing element.
The content of the nested element is simply cut off at the border of the containing element
hidden
and no scrollbars is visible.
The size of the containing element does not change, but the scrollbars are added to allow
scroll
the user to scroll to see the content.
The purpose is the same as scroll, but the scrollbar will be shown only if the content does
auto
overflow.
<style type="text/css">
.scroll{
display:block;
border: 1px solid red;
padding:5px;
margin-top:5px;
width:300px;
height:50px;
overflow:scroll;
}
.auto{
display:block;
border: 1px solid red;
padding:5px;
margin-top:5px;
width:300px;
height:50px;
overflow:auto;
}
</style>
<p>Example of scroll value:</p>
<div class="scroll">
I am going to keep lot of content here just to show
you how scrollbars works if there is an overflow in
an element box. This provides your horizontal as well
as vertical scrollbars.
</div>
<br />
<p>Example of auto value:</p>
<div class="auto">
I am going to keep lot of content here just to show
you how scrollbars works if there is an overflow in
an element box. This provides your horizontal as well
as vertical scrollbars.
</div>
I am going to keep lot of content here just to show you how scrollbars works if there is an overflow
in an element box. This provides your horizontal as well as vertical scrollbars.
I am going to keep lot of content here just to show you how scrollbars works if there is an overflow
in an element box. This provides your horizontal as well as vertical scrollbars.
CSS - Visibility
A property called visibility allows you to hide an element from view. You can use this property
alongwith Javascript to create very complex menu and very complex webpage layouts.
You may choose to use the visibility property to hide error messages that are only displayed if the
user needs to see them, or to hide answers to a quiz until the user selects an option.
NOTE: Remember that the source code will still contain whatever is in the invisible paragraph, so
you should not use this to hide sensitive information such as credit card details or passwords.
The visibility property can take the values listed in the table that follows:
Value Description
visible The box and its contents are shown to the user.
The box and its content are made invisible, although they still affect the layout of the
hidden
page.
collapse This is for use only with dynamic table columns and row effects.
<p>
This paragraph should be visible in normal way.
</p>
<p style="visibility:hidden;">
This paragraph should not be visible.
</p>
CSS helps you to position your HTML element. You can put any HTML element at whatever location
you like. You can specify whether you want the element positioned relative to its natural position in
the page or absolute based on its parent element.
Now we will see all the CSS positioning related properties with examples:
Relative Positioning:
Relative positioning changes the position of the HTML element relative to where it normally appears.
So "left:20" adds 20 pixels to the element's LEFT position.
You can use two values top and left alongwith position property to move an HTML element
anywhere in HTML document. Here's a quick reference when moving HTML elements in CSS.
NOTE: You can use bottom or right values as well in the same way as top and left.
<div style="position:relative;left:80px;top:2px;
background-color:yellow;">
This div has relative positioning.
</div>
Absolute Positioning:
An element with position: absolute is positioned at the specified coordinates relative to your screen
top left corner.
You can use two values top and left alongwith position property to move an HTML element
anywhere in HTML document. Here's a quick reference when moving HTML elements in CSS.
NOTE: You can use bottom or right values as well in the same way as top and left.
Fixed Positioning:
Fixed positioning allows you to fix the position of an element to a particular spot on the page -
regardless of scrolling. Specified coordinates will be relative to the browser window.
You can use two values top and left alongwith position property to move an HTML element
anywhere in HTML document. Here's a quick reference when moving HTML elements in CSS.
NOTE: You can use bottom or right values as well in the same way as top and left.
<div style="position:fixed;left:80px;top:20px;
background-color:yellow;">
This div has fixed positioning.
</div>
CSS - Layers
CSS gives you opportunity to create layers of various divisions. The CSS layers refer to applying the
z-index property to elements that overlap with each other.
The z-index property is used alongwith position property to create an effect of layers. You can
specify which element should come on top and which element should come at bottom.
A z-index property can help you to create more complex webpage layouts. Following is the example
which shows how to create layers in CSS.
<div style="background-color:red;
width:300px;
height:100px;
position:relative;
top:10px;
left:80px;
z-index:2">
</div>
<div style="background-color:yellow;
width:300px;
height:100px;
position:relative;
top:-60px;
left:35px;
z-index:1;">
</div>
<div style="background-color:green;
width:300px;
height:100px;
position:relative;
top:-220px;
left:120px;
z-index:3;">
</div>
CSS - Pseudo Classes
CSS pseudo-classes are used to add special effects to some selectors. You do not need to use
Javascript or any other script to use those effects. A simple syntax of pseudo-classes is as follows:
Value Description
:hover Use this class to add special style to an element when you mouse over it.
:focus Use this class to add special style to an element while the element has focus.
:first- Use this class to add special style to an element that is the first child of some other
child element.
While defining pseudo-classes in a <style>...</style> block, following points should be taken care:
a:hover MUST come after a:link and a:visited in the CSS definition in order to be effective.
a:active MUST come after a:hover in the CSS definition in order to be effective.
Pseudo-class names are not case-sensitive.
Pseudo-class are different from CSS classes but they can be combined.
<style type="text/css">
a:link {color:#000000}
</style>
<a href="/html/index.htm">Black Link</a>
Black Link
The :visited pseudo-class
Following is the example which demonstrates how to use :visited class to set the color of visited
links. Possible value could be any color name in any valid format.
<style type="text/css">
a:visited {color: #006600}
</style>
<a href="/html/index.htm">Click this link</a>
This will produce following link. Once you will click this link, it will change its color to green.
<style type="text/css">
a:hover {color: #FFCC00}
</style>
<a href="/html/index.htm">Bring Mouse Here</a>
This will produce following link. Now you bring your mouse over this link and you will see that it
changes its color to yellow.
<style type="text/css">
a:active {color: #FF00CC}
</style>
<a href="/html/index.htm">Click This Link</a>
This will produce following link. This will change its color to pink when user clicks it.
This will produce following link. This will change it color to orange when this link gets focused, then
you focus on any other link to see that this color will change when it will lose focus.
For example, to indent the first paragraph of all <div> elements, you could use this definition:
<style type="text/css">
div > p:first-child
{
text-indent: 25px;
}
</style>
<div>
<p>
First paragraph in div. This paragraph will be indented
</p>
<p>
Second paragraph in div. This paragraph will not be indented
</p>
</div>
<div>
<h3>Heading</h3>
<p>
The first paragraph inside the div.
This paragraph will not be effected.
</p>
</div>
This class is useful in documents that must appeal to multiple languages that have different
conventions for certain language constructs. For example, the French language typically uses angle
brackets (< and >) for quoting purposes, while the English language uses quote marks (' and ').
In a document that needs to address this difference, you can use the :lang pseudo-class to change
the quote marks appropriately. The following code changes the <blockquote> tag appropriately for
the language being used:
<style type="text/css">
/* Two levels of quotes for two languages*/
:lang(en) { quotes: '"' '"' "'" "'"; }
:lang(fr) { quotes: "<<" ">>" "<" ">"; }
</style>
<p>...<q lang="fr">A quote in a paragraph</q>...</p>
The :lang selectors will apply to all elements in the document. However, not all elements make use
of the quotes property, so the effect will be transparent for most elements.
CSS pseudo-elements are used to add special effects to some selectors. You do not need to use
Javascript or any other script to use those effects. A simple syntax of pseudo-element is as follows:
Value Description
:first-line Use this element to add special styles to the first line of the text in a selector.
:first-letter Use this element to add special style to the first letter of the text in a selector.
<style type="text/css">
p:first-line { text-decoration: underline; }
p.noline:first-line { text-decoration: none; }
</style>
<p class="noline"> This line would not have any underline
because this belongs to nline class.</p>
This line would not have any underline because this belongs to nline class.
The first line of this paragraph will be underlined as defined in the CSS rule above. Rest of the lines
in this paragraph will remain normal. This example shows how to use :first-line pseduo element to
give effect to the first lines of any HTML element.
The :first-letter pseudo-element
Following is the example which demonstrates how to use :first-letter element to add special effect
to the first letter of elements in the document .
<style type="text/css">
p:first-letter { font-size: 3em; text-color:red; }
p.normal:first-letter { font-size: 10px; }
</style>
<p class="normal"> First character of this paragraph will
be normal and will have font size 10 px;</p>
First character of this paragraph will be normal and will have font size 10 px;
The first character of this paragraph will be 3em big and in red color as defined in the CSS rule
above. Rest of the characters in this paragraph will remain normal. This example shows how to use
:first-letter pseduo element to give effect to the first characters of any HTML element.
<style type="text/css">
p:before
{
content: url(/images/bullet.gif)
}
</style>
<p> This line will be preceded by a bullet.</p>
<p> This line will be preceded by a bullet.</p>
<p> This line will be preceded by a bullet.</p>
<style type="text/css">
p:after
{
content: url(/images/bullet.gif)
}
</style>
<p> This line will be succeeded by a bullet.</p>
<p> This line will be succeeded by a bullet.</p>
<p> This line will be succeeded by a bullet.</p>
The @import: rule imports another style sheet into the current style sheet.
The @charset rule indicates the character set the style sheet uses.
The @font-face rule is used to exhaustively describe a font face for use in a document.
The !important rule indicates that a user-defined rule should take precedence over the
author's style sheets.
NOTE: There are other @ rules which I will cover in subsequent chapters.
<style tyle="text/css">
<!--
@import "mystyle.css";
or
@import url("mystyle.css");
.......other CSS rules .....
-->
</style>
The significance of the @import rule is that it allows you to develop your style sheets with a
modular approach. You can create various style sheets and then include them wherever you need
them.
The @charset rule must be written right at the beginning of the style sheet without even a space
before it. The value is held in quotes and should be one of the standard character-sets. For example
<style tyle="text/css">
<!--
@charset "iso-8859-1"
.......other CSS rules .....
-->
</style>
The @font-face Rule
The @font-face rule is used to exhaustively describe a font face for use in a document. @font-face
may also be used to define the location of a font for download, although this may run into
implementation-specific limits.
In general, @font-face is extremely complicated, and its use is not recommended for any except
those who are expert in font metrics.
<style tyle="text/css">
<!--
@font-face {
font-family: "Scarborough Light";
src: url("http://www.font.site/s/scarbo-lt");
}
@font-face {
font-family: Santiago;
src: local ("Santiago"),
url("http://www.font.site/s/santiago.tt")
format("truetype");
unicode-range: U+??,U+100-220;
font-size: all;
font-family: sans-serif;
}
-->
</style>
The !important rule is a way to make your CSS cascade but also have the rules you feel are most
crucial always be applied. A rule that has the !important property will always be applied no matter
where that rule appears in the CSS document.
For example, in the following style sheet, the paragraph text will be black, even though the first
style property applied is red:
<style tyle="text/css">
<!--
p { color: #ff0000; }
p { color: #000000; }
-->
</style>
So if you wanted to make sure that a property always applied, you would add the !important
property to the tag. So, to make the paragraph text always red, you should write it as follows:
<style tyle="text/css">
<!--
p { color: #ff0000 !important; }
p { color: #000000; }
-->
</style>
Here you have made p { color: #ff0000 !important; } mandatory, now this rule will always apply
even you have defined another rule p { color: #000000; }
CSS Filters - Text and Image Effects
You can use CSS filters to add special effects to text, images and other aspects of a webpage
without using images or other graphics. Filters only work on Internet Explorer 4.0+,. So if you
are developing your site for multi browsers then it may not be a good idea to use CSS filters
because there is a possibility that it would not give any advantage.
In this tutorial we will see detail of each CSS filter. These filters may not work in your browser.
Alpha Channel
This filter alters the opacity of the object, which makes it blend into the background. Following are
the parameters which can be used in this filter:
Parameter Description
0 = uniform
style
1 = linear
2 = radial
3 = rectangular
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: Alpha(Opacity=100, FinishOpacity=0,
Style=2, StartX=20, StartY=40, FinishX=0, FinishY=0)">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: blue; Filter:
Alpha(Opacity=100, FinishOpacity=0, Style=1, StartX=0, StartY=0, FinishX=580, FinishY=0)">CSS
Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Motion Blur
This will be used to create blurred pictures or text with the direction and strength. Following are the
parameters which can be used in this filter:
Parameter Description
True or false. If true the image is added to the blurred image and if false the image is
add
not added to the blurred image.
The direction of the blur, going clockwise, rounded to 45-degree increments. The
default value is 270 (left).
0 = Top
45 = Top right
direction 90 = Right
135 = Bottom right
180 = Bottom
225 = Bottom left
270 = Left
315 = Top left
strength The number of pixels the blur will extend. The default is 5 pixels.
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: Blur(Add = 0, Direction = 225, Strength
= 10)">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: blue; Filter:
Blur(Add = 1, Direction = 225, Strength = 10)">CSS Tutorials</div>
Text Example:
CSS Tutorials
Chroma Filter
This will be used to make any particular color transparent and usually it is used with images. You
can use it with scrollbars also.Following are the parameters which can be used in this filter:
Parameter Description
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: Chroma(Color = #FFFFFF)">
<p>Text Example:</p>
<div style="width: 580; height: 50; font-size: 30pt; font-family: Arial Black; color: #3300FF; Filter:
Chroma(Color = #3300FF)">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Drop Shadow Effect
This will be used to create a shadow of your object at the specified X (horizontal) and Y (vertical)
offset and color. . Following are the parameters which can be used in this filter:
Parameter Description
Number of pixels the drop shadow is offset from the visual object, along the x-axis.
offX Positive integers move the drop shadow to the right, negative integers move the drop
shadow to the left.
Number of pixels the drop shadow is offset from the visual object, along the y-axis.
offY Positive integers move the drop shadow down, negative integers move the drop
shadow up.
If true, all opaque pixels of the object have a dropshadow. If false, all transparent
positive
pixels have a dropshadow. The default is true.
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: Chroma(Color = #000000)
DropShadow(Color=#FF0000, OffX=2, OffY=2, Positive=1)">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
DropShadow(Color=#000000, OffX=2, OffY=2, Positive=1)">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Flip Effect
This will be used to create a mirror image of the object. Following are the parameters which can be
used in this filter:
Parameter Description
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: FlipH">
<p>Text Example:</p>
<div style="width: 300; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
FlipV">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Glow Effect
This will be used to create a glow around the object. If it is a transparent image then glow is
created around the opaque pixels of it. Following are the parameters which can be used in this
filter:
Parameter Description
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: Chroma(Color = #000000)
Glow(Color=#00FF00, Strength=20)">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
Glow(Color=#00FF00, Strength=20)">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Grayscale Effect
This will be used to convert the colors of the object to 256 shades of gray. Following are the
parameters which can be used in this filter:
Parameter Description
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: Gray">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
Gray">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Invert Effect
This will be used to map the colors of the object to their opposite value in the color spectrum ie. to
create a negative image. Following are the parameters which can be used in this filter:
Parameter Description
Invert Maps the colors of the object to their opposite value in the color spectrum.
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: invert">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
invert">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Mask Effect
This will be used to turn transparent pixels to a specified color and makes opaque pixels
transparent. Following are the parameters which can be used in this filter:
Parameter Description
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="FILTER: Chroma(Color = #000000)
Mask(Color=#00FF00)">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
Mask(Color=#00FF00)">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Shadow Filter
This will be used to create an attenuated shadow in the direction and color specified. This is a filter
lies in between Dropshadow and a Glow. Following are the parameters which can be used in this
filter:
Parameter Description
The direction of the blur, going clockwise, rounded to 45-degree increments. The
default value is 270 (left).
0 = Top
45 = Top right
direction 90 = Right
135 = Bottom right
180 = Bottom
225 = Bottom left
270 = Left
315 = Top left
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="FILTER: Chroma(Color = #000000)
Shadow(Color=#00FF00, Direction=225)">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
Shadow(Color=#0000FF, Direction=225)">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
Wave Effect
This will be used to gives the object a sine wave distortion to make it look wavey. Following are the
parameters which can be used in this filter:
Parameter Description
add A value of 1 adds the original image to the waved image, 0 does not.
phase At what degree the sine wave should start (from 0 to 100).
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="FILTER: Chroma(Color = #000000)
Wave(Add=0, Freq=1, LightStrength=10, Phase=220, Strength=10)">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red; Filter:
Wave(Add=0, Freq=1, LightStrength=10, Phase=20, Strength=20)">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
X-Ray Effect
This will be used to grayscales and flattens the color depth. Following are the parameters which can
be used in this filter:
Parameter Description
Example:
<p>Image Example:</p>
<img src="/images/css.gif" alt="CSS Logo" style="Filter: Xray"">
<p>Text Example:</p>
<div style="width: 357; height: 50; font-size: 30pt; font-family: Arial Black; color: red;
style="Filter: Xray">CSS Tutorials</div>
Image Example:
Text Example:
CSS Tutorials
CSS - Media Types
One of the most important features of style sheets is that they specify how a document is to be
presented on different media: on the screen, on paper, with a speech synthesizer, with a braille
device, etc.
here are currently two ways to specify media dependencies for style sheets:
Specify the target medium from a style sheet with the @media or @import at-rules.
Specify the target medium within the document language.
<style tyle="text/css">
<!--
@media print {
body { font-size: 10pt }
}
@media screen {
body { font-size: 12pt }
}
@media screen, print {
body { line-height: 1.2 }
}
-->
</style>
<style tyle="text/css">
<!--
<!doctype html public "-//w3c//dtd html 4.0//en">
<html>
<head>
<title>link to a target medium</title>
<link rel="stylesheet" type="text/css"
media="print, handheld" href="foo.css">
</head>
<body>
<p>the body...
</body>
</html>
-->
</style>
Value Description
handheld Intended for handheld devices (typically small screen, monochrome, limited bandwidth).
Intended for paged, opaque material and for documents viewed on screen in print
print
preview mode. Please consult the section on paged media.
Intended for media using a fixed-pitch character grid, such as teletypes, terminals, or
tty
portable devices with limited display capabilities.
Paged media differ from continuous media in that the content of the document is split into one or
more discrete pages. Paged media includes paper, transparencies, pages that are displayed on
computer screens, etc.
The CSS2 standard introduces some basic pagination control features that let authors help the
browser figure out how to best print their documents.
The CSS2 page model specifies how a document is formatted within a rectangular area -- the page
box -- that has a finite width and height. These features fall into two groups:
The page area: The page area includes the boxes laid out on that page. The edges of the
page area act as the initial containing block for layout that occurs between page breaks.
The margin area: which surrounds the page area.
You can specify the dimensions, orientation, margins, etc. of a page box within an @page rule. The
dimensions of the page box are set with the 'size' property. The dimensions of the page area are the
dimensions of the page box minus the margin area.
For example, the following @page rule sets the page box size to 8.5 x 11 inches and creates '2cm'
margin on all sides between the page box edge and the page area:
<style tyle="text/css">
<!--
@page { size:8.5in 11in; margin: 2cm }
-->
</style>
You can use the margin, margin-top, margin-bottom, margin-left, and margin-right properties
within the @page rule to set margins for your page.
Finally, the marks property is used within the @page rule to create crop and registration marks
outside the page box on the target sheet. By default, no marks are printed. You may use one or
both of the crop and cross keywords to create crop marks and registration marks, respectively, on
the target print page.
The size property specifies the size and orientation of a page box. There are four values which can
be used for page size:
auto: The page box will be set to the size and orientation of the target sheet.
landscape: Overrides the target's orientation. The page box is the same size as the target,
and the longer sides are horizontal.
portrait: Overrides the target's orientation. The page box is the same size as the target,
and the shorter sides are horizontal.
length: Length values for the 'size' property create an absolute page box. If only one
length value is specified, it sets both the width and height of the page box. Percentage
values are not allowed for the 'size' property.
In the following example, the outer edges of the page box will align with the target. The percentage
value on the 'margin' property is relative to the target size so if the target sheet dimensions are
21.0cm x 29.7cm (i.e., A4), the margins are 2.10cm and 2.97cm.
<style tyle="text/css">
<!--
@page {
size: auto; /* auto is the initial value */
margin: 10%;
}
-->
</style>
Below example sets the width of the page box to be 8.5in and the height to be 11in. The page box
in this example requires a target sheet size of 8.5"x11" or larger.
<style tyle="text/css">
<!--
@page {
size: 8.5in 11in; /* width height */
}
-->
</style>
Once you create a named page layout, you can use it in your document by adding the page
property to a style that is later applied to an element in your document. For example, this style
renders all the tables in your document on landscape pages:
<style tyle="text/css">
<!--
@page { size : portrait }
@page rotated { size : landscape }
table { page : rotated }
-->
</style>
Due to the above rule, while printing, if the browser encounters a <table> element in your
document and the current page layout is the default portrait layout, it starts a new page and prints
the table on a landscape page.
@page :right {
margin-left: 3cm;
margin-right: 4cm;
}
-->
</style>
You can specify the style for the first page of a document with the :first pseudo-class:
<style tyle="text/css">
<!--
@page { margin: 2cm } /* All margins set to 2cm */
@page :first {
margin-top: 10cm /* Top margin on first page 10cm */
}
-->
</style>
Controlling pagination:
Unless you specify otherwise, page breaks occur only when the page format changes or when the
content overflows the current page box. To otherwise force or suppress page breaks, use the page-
break-before, pagebreak-after, and page-break-inside properties.
Both the page-break-before and page-break-after properties accept the auto, always, avoid, left,
and right keywords.
The keyword auto is the default, it lets the browser generate page breaks as needed. The keyword
always forces a page break before or after the element, while avoid suppresses a page break
immediately before or after the element. The left and right keywords force one or two page breaks,
so that the element is rendered on a left-hand or right-hand page.
Using pagination properties is straightforward. Suppose your document has level-1 headers start
new chapters, with sections denoted by level-2 headers. You'd like each chapter to start on a new,
right-hand page, but you don't want section headers to be split across a page break from the
subsequent content. You can achieve this using following rule:
<style tyle="text/css">
<!--
h1 { page-break-before : right }
h2 { page-break-after : avoid }
-->
</style>
Use only the auto and avoid values with the page-break-inside property. If you prefer that your
tables not be broken across pages if possible, you would write the rule:
<style tyle="text/css">
<!--
table { page-break-inside : avoid }
-->
</style>
The orphans property specifies the minimum number of lines of a paragraph that must be
left at the bottom of a page.
The widows property specifies the minimum number of lines of a paragraph that must be
left at the top of a page.
Here is the example to create 4 lines at the bottom and 3 lines at the top of each page:
<style tyle="text/css">
<!--
@page{orphans:4; widows:2;}
-->
</style>
CSS - Aural Media
A web document can be rendered by a speech synthesizer. CSS2 allows you to attach specific sound
style features to specific document elements.
Aural rendering of documents is mainly used by the visually impaired. Some of the situations in
which a document can be accessed by means of aural rendering rather than visual rendering are the
following.
Learning to read
Training
Web access in vehicles
Home entertainment
Industrial documentation
Medical documentation
When using aural properties, the canvas consists of a three-dimensional physical space (sound
surrounds) and a temporal space (one may specify sounds before, during, and after other sounds).
The CSS properties also allow you to vary the quality of synthesized speech (voice type, frequency,
inflection, etc.)
<style tyle="text/css">
<!--
h1, h2, h3, h4, h5, h6 {
voice-family: paul;
stress: 20;
richness: 90;
cue-before: url("ping.au")
}
p.heidi { azimuth: center-left }
p.peter { azimuth: right }
-->
</style>
This will direct the speech synthesizer to speak headers in a voice (a kind of audio font) called
"paul", on a flat tone, but in a very rich voice. Before speaking the headers, a sound sample will be
played from the given URL.
Paragraphs with class heidi will appear to come from front left (if the sound system is capable of
spatial audio), and paragraphs of class peter from the right.
The azimuth property sets where the sound should come from horizontally.
The elevation property sets where the sound should come from vertically.
The cue-after specifies a sound to be played after speaking an element's content to delimit
it from other.
The cue-before specifies a sound to be played before speaking an element's content to
delimit it from other.
The cue is a shorthand for setting cue-before and cue-after
The pause-after specifies a pause to be observed after speaking an element's content.
The pause-before specifies a pause to be observed before speaking an element's content.
The pause is a shorthand for setting pause-before and pause-after.
The pitch specifies the average pitch (a frequency) of the speaking voice.
The pitch-range specifies variation in average pitch.
The play-during specifies a sound to be played as a background while an element's
content is spoken.
The richness specifies the richness, or brightness, of the speaking voice.
The speak specifies whether text will be rendered aurally and if so, in what manner.
The speak-numeral controls how numerals are spoken.
The speak-punctuation specifies how punctuation is spoken.
The speech-rate specifies the speaking rate.
The stress specifies the height of "local peaks" in the intonation contour of a voice.
The voice-family specifies prioritized list of voice family names.
The volume refers to the median volume of the voice.
angle: Position is described in terms of an angle within the range -360deg to 360deg. The
value 0deg means directly ahead in the center of the sound stage. 90deg is to the right,
180deg behind, and 270deg (or, equivalently and more conveniently, -90deg) to the left.
left-side: Same as '270deg'. With 'behind', '270deg'.
far-left: Same as '300deg'. With 'behind', '240deg'.
left: Same as '320deg'. With 'behind', '220deg'.
center-left: Same as '340deg'. With 'behind', '200deg'.
center: Same as '0deg'. With 'behind', '180deg'.
center-right: Same as '20deg'. With 'behind', '160deg'.
right: Same as '40deg'. With 'behind', '140deg'.
far-right: Same as '60deg'. With 'behind', '120deg'.
right-side: Same as '90deg'. With 'behind', '90deg'.
leftwards: Moves the sound to the left and relative to the current angle. More precisely,
subtracts 20 degrees.
rightwards: Moves the sound to the right, relative to the current angle. More precisely,
adds 20 degrees.
<style tyle="text/css">
<!--
h1 { azimuth: 30deg }
td.a { azimuth: far-right } /* 60deg */
#12 { azimuth: behind far-right } /* 120deg */
p.comment { azimuth: behind } /* 180deg */
-->
</style>
angle: Specifies the elevation as an angle, between -90deg and 90deg. 0deg means on the
forward horizon, which loosely means level with the listener. 90deg means directly
overhead and -90deg means directly below.
below: Same as '-90deg'.
level: Same as '0deg'.
above: Same as '90deg'.
higher: Adds 10 degrees to the current elevation.
lower: Subtracts 10 degrees from the current elevation.
<style tyle="text/css">
<!--
h1 { elevation: above }
tr.a { elevation: 60deg }
tr.b { elevation: 30deg }
tr.c { elevation: level }
-->
</style>
<style tyle="text/css">
<!--
a {cue-after: url("dong.wav");}
h1 {cue-after: url("pop.au"); }
-->
</style>
<style tyle="text/css">
<!--
a {cue-before: url("bell.aiff");}
h1 {cue-before: url("pop.au"); }
-->
</style>
<style tyle="text/css">
<!--
h1 {cue-before: url("pop.au"); cue-after: url("pop.au") }
h1 {cue: url("pop.au") }
-->
</style>
time: Expresses the pause in absolute time units (seconds and milliseconds).
percentage: Refers to the inverse of the value of the speech-rate property. For example, if
the speech-rate is 120 words per minute (i.e. a word takes half a second, or 500ms) then a
pause-after of 100% means a pause of 500 ms and a pause-after of 20% means 100ms.
time: Expresses the pause in absolute time units (seconds and milliseconds).
percentage: Refers to the inverse of the value of the speech-rate property. For example, if
the speech-rate is 120 words per minute (i.e. a word takes half a second, or 500ms) then a
pause-before of 100% means a pause of 500 ms and a pause-before of 20% means 100ms.
<style tyle="text/css">
<!--
/* pause-before: 20ms; pause-after: 20ms */
h1 { pause : 20ms }
/* pause-before: 30ms; pause-after: 40ms */
h2{ pause : 30ms 40ms }
/* pause-before: ?; pause-after: 10ms */
h3 { pause-after : 10ms }
-->
</style>
frequency: Specifies the average pitch of the speaking voice in hertz (Hz).
x-low, low, medium, high, x-high : These values do not map to absolute frequencies
since these values depend on the voice family.
number: A value between '0' and '100'. A pitch range of '0' produces a flat, monotonic
voice. A pitch range of 50 produces normal inflection. Pitch ranges greater than 50 produce
animated voices.
URI: The sound designated by this <uri> is played as a background while the element's
content is spoken.
mix: When present, this keyword means that the sound inherited from the parent
element's play-during property continues to play and the sound designated by the uri is
mixed with it. If mix is not specified, the element's background sound replaces the parent's.
repeat: When present, this keyword means that the sound will repeat if it is too short to fill
the entire duration of the element. Otherwise, the sound plays once and then stops.
auto: The sound of the parent element continues to play.
none: This keyword means that there is silence.
<style tyle="text/css">
<!--
blockquote.sad { play-during: url("violins.aiff") }
blockquote q { play-during: url("harp.wav") mix }
span.quiet { play-during: none }
-->
</style>
number: A value between '0' and '100'. The higher the value, the more the voice will carry.
A lower value will produce a soft, mellifluous voice.
Note the difference between an element whose 'volume' property has a value of 'silent' and an
element whose 'speak' property has the value 'none'. The former takes up the same time as if it had
been spoken, including any pause before and after the element, but no sound is generated. The
latter requires no time and is not rendered
digits: Speak the numeral as individual digits. Thus, "237" is spoken "Two Three Seven".
continuous: Speak the numeral as a full number. Thus, "237" is spoken "Two hundred
thirty seven". Word representations are language-dependent.
number: A value, between '0' and '100'. The meaning of values depends on the language
being spoken. For example, a level of '50' for a standard, English-speaking male voice
(average pitch = 122Hz), speaking with normal intonation and emphasis would have a
different meaning than '50' for an Italian voice.
<style tyle="text/css">
<!--
h1 { voice-family: announcer, male }
p.part.romeo { voice-family: romeo, male }
p.part.juliet { voice-family: juliet, female }
-->
</style>
numbers: Any number between '0' and '100'. '0' represents the minimum audible volume
level and 100 corresponds to the maximum comfortable level.
percentage: These values are calculated relative to the inherited value, and are then
clipped to the range '0' to '100'.
silent: No sound at all. The value '0' does not mean the same as 'silent'.
x-soft: Same as '0'.
soft: Same as '25'.
medium: Same as '50'.
loud: Same as '75'.
x-loud: Same as '100'.
<style tyle="text/css">
<!--
P.goat { volume: x-soft }
-->
</style>
You can use CSS to change the appearance of your web page when it's printed on a paper. You can
specify one font for the screen version and another for the print version.
You have seen @media rule in previous chapters. This rule allows you to specify different style for
different media. So you can define different rules for screen and a printer.
The example below specifies different font families for screen and print. Next CSS uses the same
font size for both screen as well as printer.
<style tyle="text/css">
<!--
@media screen
{
p.bodyText {font-family:verdana, arial, sans-serif;}
}
@media print
{
p.bodyText {font-family:georgia, times, serif;}
}
@media screen, print
{
p.bodyText {font-size:10pt}
}
-->
</style>
If you are defining your style sheet in a separate file then you can also use the media attribute
when linking to an external style sheet:
Hope you are very comfortable with HTML tables and you are efficient in designing page layouts
using HTML Tables. But you know CSS also provides plenty of controls for positioning elements in a
document. Since CSS is the wave of the future, why not learn and use CSS instead of tables for
page layout purposes?
I'm listing down few pros and cons of both the technologies:
Most browsers support tables, while CSS support is being slowly adopted.
Tables are more forgiving when the browser window size changes - morphing their content
and wrapping to accommodate the changes accordingly. CSS positioning tends to be exact
and fairly inflexible.
Tables are much easier to learn and manipulate than CSS rules.
CSS is pivotal to the future of Web documents and will be supported by most browsers
Using it now helps guarantee future compliance.
CSS is more exact than tables, allowing your document to be viewed as you intended,
regardless of the browser window.
Keeping track of nested tables can be a real pain.CSS rules tend to be well organized, easily
read, and easily changed.
Finally, I would suggest you to use whichever technology makes sense to you - use what you know
or what presents your documents in the best way.
CSS also provides table-layout property to make your tables load much faster.Following is the
example:
<table style="table-layout:fixed;width:600px;">
<tr height="30">
<td width="150">CSS table layout cell 1</td>
<td width="200">CSS table layout cell 2</td>
<td width="250">CSS table layout cell 3</td>
</tr>
</table>
You will notice the benefits more on large tables. The reason this makes tables load faster is
because with traditional HTML, the browser had to calculate every cell before finally rendering the
table. When you set the table-layout algorithm to fixed however, it only needs to look at the first
row before rendering the whole table. This means that your table will need to have fixed column
widths and row heights.
<style tyle="text/css">
<!--
body {
margin:9px 9px 0 9px;
padding:0;
background:#FFF;
}
-->
</style>
Now we will define a column with yellow color and later we will attach this rule to a <div>:
<style tyle="text/css">
<!--
#level0 {
background:#FC0;
}
-->
</style>
Upto this point we will have a document with yellow body, so lets now define another division inside
level0:
<style tyle="text/css">
<!--
#level1 {
margin-left:143px;
padding-left:9px;
background:#FFF;
}
-->
</style>
Now we will nest one more division inside level1 and we will change just background color:
<style tyle="text/css">
<!--
#level2 {
background:#FFF3AC;
}
-->
</style>
Finally we use the same technique, nest a level3 division inside level2 to get the visual layout for
the right column:
<style tyle="text/css">
<!--
#level3 {
margin-right:143px;
padding-right:9px;
background:#FFF;
}
#main {
background:#CCC;
}
-->
</style>
<style tyle="text/css">
<!--
body {
margin:9px 9px 0 9px;
padding:0;
background:#FFF;}
#level0 {
background:#FC0;}
#level1 {
margin-left:143px;
padding-left:9px;
background:#FFF;}
#level2 {
background:#FFF3AC;}
#level3 {
margin-right:143px;
padding-right:9px;
background:#FFF;}
#main {
background:#CCC;}
-->
</style>
<body>
<div id="level0">
<div id="level1">
<div id="level2">
<div id="level3">
<div id="main">
Final Content goes here...
</div>
</div>
</div>
</div>
</div>
</body>
Similar way you can add top navigation bar or ad bar at the top of the page.
CSS Validations
Validation is checking something against a rule. When you are beginners, this is very common that
you will do many mistakes in writing your CSS rules. How you will make sure whatever you have
written is 100% accurate and upto the W3 quality standards.
If you use CSS your code needs to be correct. Improper code may cause unexpected results in how
your page looks or functions.
But if you want to validate your CSS style sheet embedded in an (X)HTML document, you should
first check that the (X)HTML you use is valid.
There are following good tools to check the validity of your CSS.
W3C CSS Validator (World Wide Web Consortium) This validator checks your
css by either file upload, direct input, or using URI - one page at a time. This
validator helps you to locate all the errors in your CSS.
The WDG CSS check validator lets you validate your css by direct input, file
upload, and using URI. Errors will be listed by line and column numbers if you
have any. errors usually come with links to explain the reason of error.
A CSS validator checks your Cascading Style Sheets to make sure that they comply with the CSS
standards set by the W3 Consortium. There are a few validators which will also tell you which CSS
features are supported by which browsers (since not all browsers are equal in their CSS
implementation).
The following table shows the 16 color names that were introduced in HTML 3.2 to support the 16
colors that 8-bit graphics cards offered. Same set of color can be used in CSS:
There are other colors which are not part of HTML or XHTML but they are supported by most of the
versions of IE or Netscape. These color names can be used in CSS as well.
This is a quick guide for web developers where we have listed all the CSS properties defined in the
World Wide Web Consortium's Recommended Specification for Cascading Style Sheets, Level 2
We include each property's possible values, defined as either an explicit keyword or as one of these
values:
background-attachment
Values from composite background-color
background
properties. background-image
background-position
background-repeat
scroll
background- fixed Determines if the background image is fixed in the
attachment window or scrolls as the document scrolls
background-
color Sets the background color of an element
color
transparent
url
background- none Sets the background image of an element
image
percent
none
length
top Sets the initial position of the element's background
background- center image, if specified; values normally are paired to
position bottom provide x, y positions; default position is 0% 0%.
left
right
repeat
repeat-x
background- repeat-y Determines how the background image is repeated
repeat no-repeat (tiled) across an element
collapse
border- separate Sets the table border rendering algorithm
collapse
color
transparent Sets the color of all four of an element's borders;
border-color
default is the color of the element
length
thin
border-width medium Sets the thickness of all four of an element's borders
thick
length
percent Used with the position property to place the bottom
bottom
edge of an element
top
bottom
caption-side left Sets the position for a table caption
right
both
left Sets which margins of an element must not be
clear none adjacent to a floating element; the element is moved
right down until that margin is clear
shape
clip Sets the clipping mask for an element
color
color Sets the color of an element
url
none Plays the designated sound before an element is
cue-before
spoken
url
auto
crosshair
default
active
pointer
move
e-resize
ne-resize
nw-resize
cursor n-resize Defines shap of the cursor
se-resize
sw-resize
s-resize
w-resize
text
wait
help
progress
ltr
direction rtl Defines direction of the flow of an element content
block
inline
list-items
display marker Controls how an element is displayed
none
angle
below
level
elevation above Sets the height at which a sound is played
higher
lower
hide
empty-cells show With separate borders, hides empty cells in a table
left
none Determines if an element floats to the left or right,
float right allowing text to wrap around it or be displayed inline
font-style
font-variant
font See description
font-weight
font-size
line-height
font-family
none
font-size- ratio Adjusts the current font's aspect ratio
adjust
wider
normal
narrower
ultracondensed
extracondensed
font-stretch condensed Determines the amount to stretch the current font
semi-condensed
semiexpanded
expanded
extra-ex
normal
italic Defines the style of the face, either normal or some
font-style oblique type of slanted style
normal
font-variant small-caps Defines a font to be in small caps
normal
Defines the font weight . if a number is used, it must
bold
font-weight be a multiple of 100 between 100 and 900; 400 is
bolder
normal, 700 is the same as the keyword bold
lighter
number
length
height auto Defines the height of an element
length
percent Used with the position property to place the left edge
left
of an element
length
letter-spacing normal Inserts additional space between text characters
length
number
line-height normal Sets the distance between adjacent text baselines
percent
.
inside
list-style- outside Indents or extends (default) a list item's marker with
position respect to the item's content
circle
disc
square
decimal Defines a list item's marker either for unordered lists
lower-alpha (circle, disc, or square) or for ordered lists (decimal,
list-style-type lower-roman loweralpha, lower-roman, none, upper-alpha, or
none upper-roman)
upper-alpha
upperroman
length
percent
margin auto Defines all four of an element's margins
length
margin- percent Defines the bottom margin of an element. Default
bottom auto value is 0.
length
percent Defines the right margin of an element. Default
margin-right auto value is 0.
length
percent Defines the top margin of an element. Default value
margin-top auto is 0.
percent
length max-height property is used to constrain the height
max-height none of an element.
percent
length max-width property is used to set the maximum
max-width none width of an element.
percent
length min-height property is used to constrain the height
min-height
of an element.
percent
length min-width property is used to constrain the width of
min-width
an element.
thin
medium The outline-color property is used to specify the
thick color of the outline. Note that, unlike the border
outline-width length (i.e. 1px) property, outline does not take up extra space and it
inherit can be non-rectangular.
auto
hidden
overflow scroll Determines how overflow content is rendered
visible
padding See description Defines all four padding amounts around an element
length
padding- percent Defines the bottom padding of an element. Default
bottom value is 0
length
percent Defines the left padding of an element. Default value
padding-left
is 0
length
percent Defines the right padding of an element. Default
padding-right
value is 0
length
percent Defines the top padding of an element. Default value
padding-top
is 0
name
page Associates a named page layout with an element
auto
always
page-break- avoid
left Forces or suppresses page breaks after an element.
after
right
auto
always
page-break- avoid Forces or suppresses page breaks before an
before left element.
right
auto
page-break- avoid Suppresses page breaks within an element
inside
percent
pause-after time Pauses a media after speaking an element
frequency
x-low
low
medium Sets the average pitch of an element's spoken
pitch
high content
x-high
url
mix If a URL is provided, it is played during an element's
none spoken content . specifying repeat loops the audio;
play-during
repeat mix causes it to mix with, rather than replace, other
background audio.
absolute
fixed
position relative Sets the positioning model for an element
static
quotes List of strings Sets the quote symbols used to quote text
number Sets the richness of the voice, from 0 (flat) to 100
richness
(mellifluous); default is 50
length
percent Used with the position property to place the right
right
edge of an element.
auto
length
portrait The size property is used in paged media to specify
size landscape the size of the page.
inherit
normal
none
speak spell-out Determines how an element's content is spoken.
always
once Determines if table headers are spoken once for
speak-header
each row or column or each time a cell is spoken.
continuous
speak- digits Determines how numerals are spoken
numeral
code
speak- none Determines if punctuation is spoken or used for
punctuation inflection
number
x-slow
Sets the rate of speech; a number sets the rate in
speech-rate slow
words per minute
medium
fast
x-fast
faster
slower
auto
table-layout fixed Determines the table-rendering algorithm
center
justify
text-align left Sets the text alignment style for an element
right
blink
line-through
text- none Defines any decoration for the text; values may be
decoration overline combined
underline
length
percent Defines the indentation of the first line of text in an
text-indent
element; default is 0
length
percent Used with the position property to place the top edge
top
of an element.
percent
baseline
bottom
middle
sub
vertical-align super Sets the vertical positioning of an element
text-bottom
text-top
top
collapse
hidden Determines if an element is visible in the document
visibility visible or table
normal
nowrap Defines how whitespace within an element is
white-space pre handled
length
percent
width auto Defines the width of an element
length
word-spacing normal Inserts additional space between words
number
z-index Sets the rendering layer for the current element.
Property Description
:active Use this class to add special effect to an activated element
:focus Use this class to add special effect to an element while the element has focus
:hover Use this class to add special effect to an element when you mouse over it
:link Use this class to add special effect to an unvisited link
:visited Use this class to add special effect to a visited link
Use this class to add special effect to an element that is the first child of some other
:first-child
element.
:lang Use this class to specify a language to use in a specified element
:first-
Use this element to add special effect to the first letter of a text
letter
:first-line Use this element to add special effect to the first line of a text
:before Use this element to insert some content before an element
:after Use this element to insert some content after an element