Cross Browser Compatibility Issues in CSS

Cross browser Compatibility Issues

When aligning elements like this, it is always a good idea to pre-define margin and padding for the <body> element. This is avoid visual differences in different browsers.

There is a problem with IE8 and earlier, when using the position property. If a container element (in our case <div class=@container”>) has a specified width and the! DOCTYPE declaration is missing, IE8 and earlier versions will add a 17px margin on the right side. This seems to be space reserved for a scrollbar. Always set the DOCTYPE declaration when using the position property:

Example

body{

margin:0;

padding:o;

}

.container

{

position :relative;

width :100%;

}

.right

{

position :absolute;

right:

width :800px;

background-color:#b0e0e6;

}

Left and Right Aligning Using the float Property

One method of aligning elements is use the float property:

Example

.right

{

float:right;

width : 300px;

background –color:#b0e0e6;

Cross Browser Compatibility Issues

When aligning element like this, it is always a good idea to pre-define margin and padding for the <body> element. This is to avoid visual differences in different browsers.

There is a problem with IE 8 and earlier when using the float property .If the !DOC TYPE declaration is missing IE8 and earlier version will add a 17px margin on the right side. This seems to be space reserved for a scroll bar. Always set the! DOC TYPE declaration when using the float property:

 

Example

body

{

margin:0;

padding:0;

}

.right{

float:right;

width :300px;

background-color:#b0e0e6;

}

 

CSS pseudo-classes

CSS pseudo-classes are used to add special effects to some selectors.

Syntax

The syntax of pseudo-classes:

selector:pseudo-class {property:value;}

CSS classes can also be used with pseudo-classes:

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

Anchor Pseudo-classes

Links can be displayed in different ways in a CSS-Supporting browser:

Example

a:link {color:#FF0000;}/* unvisited link*/

a:visited{color:#00FF00;}/* visited link*/

a:hover{color:#FF00FF;}/* mouse over link*/

a:active {color:#0000FF;}/*selected link*/

 

Note:

a:hover MUST come after a :link and a:visited in the CSS defintionin order to be effective!!

 

Note:

a:active MUST come after a:hover in the CSS definition in order to be effective!!

Note

Pseudo-class names are not case-sensitive.

Pseudo Classes and CSS Classes

Pseudo-classes can be combined with CSS classes:

a:red:visited{color:#FF0000;}

<a class=”red”href=”css_syntax .asp”>CSS syntax</a>

If the link in the example above has been visited ,it will be displayed in red.

 

CSS-The : first –child Pseudo-class

The : first –child pseudo-class matches a specified element that is the first child of another element.

 

Note

For :first –child to work in IE8 and earlier ,a <!DOC TYPE> must be declared.

 

Match the first <p> element

In the following example, the selector matches any <p> element that is the first child of any element:

Example

<html>

<head>

<style type=”text/css”>

p:first-child

{

color:blue;

</style>

</head>

<body>

<p>Iam a strong man</P>

<p> I am a strong man</p>

</body>

</html>

Match the first <i> element in all <p> elements

In the following example, the selector matches the first <i> element in all <p> elements:

Example

<html>

<head>

<style type=”text/css”>

<p>:first-child

{

font-weight:bold;

}

</style>

</head>

<body>

<p>I am a <i> strong</i> man. I am a <i> strong</i> man.

<p>I am a <i> strong</i> man. I am a <i> strong</i> man.

</body>

</html>

Match all <i> elements in all first child <p> elements

In the following example ,the selector matches all <i> elements in <p> elements that are the first child of another element:

Example

<html>

<head>

<style type=”text/csss”>

p:first –childi

{

color:blue;

}

</style>

</head>

<body>

<p>I am a <i> strong</i> man. I am a <i> strong</i> man.

<p>I am a <i> strong</i> man. I am a <i> strong</i> man.

</body>

</html>

 

CSS-The :lang Pseudo –class

The: lang pseudo –class allows you to define special rules for different languages.

Note:

IE 8 supports the :lang pseudo –class only if a <!DOC TYPE> is specified .

In the example below,the :lag class defines the quotation marks for q elements with lang=”no”:

Example

<html>

<head>

<style type=”text/css”>

q:lang(no){quotes:”~” “~”;}

</style>

</head>

<body>

<p>Some text<q lang=”no”> A quote in a paragraph</q> some text</p>

</body>

</html>

 

CSS Pseudo-elemets

CSS pseudo-elements are used to add special effects to some selectors.

Syntax

The syntax of pseudo-elements:

selector:pseudo-element{property:value;}

Syntax

The syntax of pseudo-elements:

selector:pseudo-elements{property:value;}

CSS classes can also be used with pseudo-elements:

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

 

The : first-line Pseudo – element

The “first-line” pseudo-element is used to add a special style to the first line of a text.

In the following example the browser formats the first line of text in a p element according to the style in the “first-line” pseudo-element(where the browser breaks the line, depends on the size of the browser window):

Example

p:first-line

{

color:#ff0000;

font-variant:small-caps;

}

 

Note : The “first-line ” pseudo-element can only be used with block-level elements.

 

Note : The following properties apply to the “first-line” pseudo-element

  • font properties
  • color properties
  • background properties
  • word-spacing
  • letter-spacing
  • text-decoration
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

 

The : first –letter Pseudo-element

The “first-letter” pseudo-element is used to add a special to the first letter of a text.

 

Example

p:first-letter

{

color:#ff0000;

font-size:xx-large;

}

 

Note

The “first-letter” pseudo-element can only be used with block level elements

 

Note

The following properties apply to the “first-letter” pseudo-element:

  • font properties
  • color properties
  • background properties
  • margin properties
  • padding properties
  • border properties
  • text-decoration
  • vertical-align(only if “float” is “none”)
  • text-transform
  • line-height
  • float
  • clear

Pseudo-elements and CSS classes

Pseudo-elements can be combined with CSS classes :

p.article:first-letter{color:#ff0000;}

<p class=”article”> A paragraph in an article</p>

The example above will display the first letter of all paragraphs with class=”article”, in red.

 

Multiple Pseudo-elements

Several pseudo-elements can also be combined.

In the following example, the first letter of paragraph will be red, in an xx-large. The rest of the first line will be blue, and in small-caps. The rest of the paragraph will be default size and color.

Example

p:first-letter

{

color:#ff0000;

font-size:XX-large;

}

p:first-line

{

color:#000000;

font-variant:small-caps;

 

CSS-The:before Pseudo-elements

The “:before” pseudo-element can be used to insert some content before the content of an element.

The following example inserts an image before each<hl> element:

Example

h1:before

content: url(smiley.gif);

 

CSS-The:after Pseudo-element

The “:after” pseudo-element can be used to insert some content after the content of an element.

The following example inserts an image after each<h1> element:

Example :

h1:after

content:url(smiley.gif);

 

All CSS Pseudo classes/Elements

SelectorExampleExample description
;linka:linkSelects all unvisited links
;visiteda:visitedSelects all visited links
;activea:activeSelects the active link
:hovera:hoverSelects links on mouse over
:focusinput:focusSelects the input element which has focus
:first-letterp:first-letterSelects the first letter of every<p> element
:first-linep:first-lineSelects the first line of every<p> element
:first-childp:first-childSelects every<p> element that is the first child of its parent
:beforep:beforeinsert content before every <p> element
:afterp:afterInsert content after every <p> element
:lang(language)p:lang(it)Selects every <p> element with a lang attribute value starting with “it”