Tuesday 07th of February 2012 01:09:47 AM


CSS Tutorials > Controlling Background Images and Colours

Controlling Background Images and Colours

This tutorial shows you how to work with the various CSS background properties. Using CSS, you can specify things like:

  • The background colour to use for a Web page, table, paragraph, etc

  • The background image for a Web page, table, paragraph, etc

  • Whether the background image scrolls with the page, or is fixed on the screen

  • Whether the background image repeats

  • The position of the background image

Adding a nice coloured or graphical background to your Web pages is a quick and easy way to spice up your site. However, it's also very easy to make Web pages look horrible, or even unreadable with the wrong type of background! The section at the end of the tutorial will help you avoid some of the common pitfalls associated with backgrounds.

Specifying background colours

The background-color property lets you set the background colour for an HTML element. For example:

p { background-color: brown }

This is a paragraph with a brown background colour.

Setting a background image

You can use the background-image property to specify a background image for an HTML element. For example, to set a background image for a Web page, you could use something like this:

<html>
<head>
<style>
body
{
background-image: url("teepees.jpg")
}
</style>
</head>
<body>
<h1>Here is my Web Page with a background image!</h1>
</body>
</html>

Click Here to see this example in action!

Note that you can also use the background-image property (and indeed any of the background properties) on tables, table cells, paragraphs, etc.

Creating a "watermark" background image

By default, a page background image will scroll with the page. However, using the background-attachment: fixed property, it's possible to create a "watermark" background that stays fixed in the same place on the screen while the page scrolls:

body
{
background-image: url("teepees.jpg");
background-attachment: fixed
}

To see how this looks, click here. Try scrolling up and down!

Specifying how the background image tiles

You can see that the background image repeats itself many times, in order to fill the whole page. You can control this tiling effect using the background-repeat property, as follows:


Code

What It Does

background-repeat: repeat

Tiles the image both horizontally and vertically. This is the default setting.

background-repeat: repeat-x

Tiles the image in the horizontal direction only. Good if you want the background running across the top of the page.

background-repeat: repeat-y

Tiles the image in the vertical direction only. Great for left-hand page borders!

background-repeat: no-repeat

No repeating takes place; only one copy of the image is displayed. This is good if you want to use a big image that isn't designed to tile.


Examples:

body
{
background-image: url("teepees.jpg");
background-repeat: repeat-x
}

Tiles the image across the page. Click here for a demo.



body
{
background-image: url("teepees.jpg");
background-repeat: repeat-y
}

Tiles the image down the page. Click here for a demo.



body
{
background-image: url("teepees.jpg");
background-repeat: no-repeat
}

Just displays the image once. Click here for a demo.

Positioning the background image

CSS gives you control over exactly where your background image is placed within the HTML element. To position your image, use the background-position property as follows:


Code

What It Does

background-position:  x% y%

Places the image x% across the page and y% down the page. Values of "0 0" indicate the top left hand corner.

background-position: x y

Places the image x units across the page and y units down the page. For example, "50px 25px" places the image 50 pixels to the right of the top left corner, and 25 pixels below it. You can use any CSS units to specify the position.

background-position: <position>

Positions the image using one of various positioning words. These are: top left, top center, top right, center left, center center, center right, bottom left, bottom center and bottom right.


Examples:

body
{
background-image: url("teepees.jpg");
background-repeat: no-repeat;
background-position: 50% 50%
}

Displays the image in the centre of the page. Click here for a demo.



body
{
background-image: url("teepees.jpg");
background-repeat: no-repeat;
background-position: 100px 50px
}

Displays the image 100 pixels to the right of, and 50 pixels below, the top left corner of the page. Click here for a demo.



body
{
background-image: url("teepees.jpg");
background-repeat: no-repeat;
started from the top left corner of the containing element (e.g.,
BODY). That isn't a requirement, of course;
as we've seen, the default values for
background-position are 0%
0%. So, unless you change the position of the
origin image, that's where the tiling starts. Now that we know
how to change the position of the origin image, we need to figure out
how user agents will handle the situation.

It will be easier to show an example, and then explain it. Consider background-position: center right }

Displays the image in the centre right of the page. Click here for a demo.

Backgrounds - not just for pages!

Don't forget that you can use these background properties on most HTML elements - not just the body tag. For example, here is our teepees image being used as a table background:

<table style="background-image: url(teepees.jpg)">
<tr>
<td><h1>Here are some teepees in a table!</h1></td>
</tr>
</table>

And this is how it renders:

Here are some teepees in a table!

Combining properties

You can use the background property to specify all the background properties easily in one go. For example:

body
{
background: url("teepees.jpg") no-repeat center center black
}

This sets the page background to black, with the teepees image in the centre of the page, non-repeating. Click here for a demo.

Some notes on style and readability

Images that weren't meant to tile

Unless you're using the background-repeat: no-repeat property, it is important that the image you're using is designed to tile. For example, this page looks horrible, because the background image that was used was not designed to tile! (Don't stare at it too long, or you might go cross-eyed!)

Backgrounds that clash with text

Some background images or colours may look very pretty, but if they make your page text hard to read, they're probably best avoided. If you want to use a page background image, choose one that is not too "busy", and that contrasts well with the text colour.

Your turn!

If you'd like to practice putting background images in your pages and page elements, try downloading some backgrounds from our ImageKits. Save the image to a folder on your hard drive somewhere, then link to it from your style sheet.

The End

That's the end of this tutorial. We hope you found it useful. If you're still stuck and would like further help, check out our online Help Forums, where you can get assistance from members of my and other webmasters.

If you would like to offer us feedback on this or any of the tutorials, please contact us. Have fun!




are differences in the handling of element placement along thehorizontal and vertical axes, for example. In order to fullyunderstand how block-level elements are handled, you must clearlyunderstand a number of boundaries and areas. They are shown in detailin Figure 8-2.

Figure 8-2

Figure 8-2. The complete box model

In general, the width of an element is defined tobe the distance from the left inner edge to the right inner edge, andthe height is the distance from the inner top to

Figure 8-9

Figure 8-9. The "seven properties" of horizontal formatting

Only three of these seven properties can be set to auto: the width of the element's content, and the left and right margins. The left and right padding and borders must be set to specific values, or else they default to a width of zero (again, assuming no border-style is declared; if one has been set, then the width of the borders is set to be the vaguely defined value medium ). Figure 8-10 provides a already halfway to an understanding of how it works. Most of what remain are the details of what happens when absolute positioning is invoked.

When an element is positioned absolutely, it is completely removed from the document flow. It is then positioned with respect to its containing block, and its edges are placed using the side-offset properties. The positioned element does not flow around the content of other elements, nor does their content flow around the positioned element. This implies that an absolutely positioned element may