CSS Backgrounds
The CSS background properties are used to define the
background effects for elements.
CSS background properties:
background-color
background-image
background-repeat
background-attachment
background-position
background-size
background-origin
background-clip
Background Color
The background-color property specifies the background color of an element.
The background color of a page is set like this:
body {
background-color: lightblue;
}
Background Image
The background-image property specifies an image to use as the background of
an element.
By default, the image is repeated so it covers the entire element.
The background image for a page can be set like this:
Example
body {
background-image: url("[Link]");
}
Note: When using a background image, use an image that does not disturb the
text.
Background Image - Repeat Horizontally or
Vertically
By default, the background-image property repeats an image both horizontally
and vertically.
Example
body {
background-image: url("gradient_bg.png");
}
If the image above is repeated only horizontally (background-repeat: repeat-
x;), the background will look better:
body {
background-image: url("gradient_bg.png");
background-repeat: repeat-x;
}
Tip: To repeat an image vertically, set background-repeat: repeat-y;
Background Image - Set position and no-
repeat
Showing the background image only once is also specified by the background-
repeat property:
Example
body {
background-image: url("img_tree.png");
background-repeat: no-repeat;
}
In the example above, the background image is shown in the same place as the
text. We want to change the position of the image, so that it does not disturb
the text too much.
The position of the image is specified by the background-position property:
Example
body {
background-image: url("img_tree.png");
background-repeat: no-repeat;
background-position: right top;
}
Background Image - Fixed position
To specify that the background image should be fixed (will not scroll with the
rest of the page), use the background-attachment property:
Example
body {
background-image: url("img_tree.png");
background-repeat: no-repeat;
background-position: right top;
background-attachment: fixed;
}
Background - Shorthand property
To shorten the code, it is also possible to specify all the background properties
in one single property. This is called a shorthand property.
The shorthand property for background is background:
Example
body {
background: #ffffff url("img_tree.png") no-repeat right top;
}
When using the shorthand property the order of the property values is:
background-color
background-image
background-repeat
background-attachment
background-position
It does not matter if one of the property values is missing, as long as the other
ones are in this order.
All CSS Background Properties
CSS Advanced Background Properties
CSS Multiple Backgrounds
CSS allows you to add multiple background images for an element, through
the background-image property.
The different background images are separated by commas, and the images are
stacked on top of each other, where the first image is closest to the viewer.
The following example has two background images, the first image is a flower
(aligned to the bottom and right) and the second image is a paper background
(aligned to the top-left corner):
Example
#example1 {
background-image: url(img_flwr.gif), url([Link]);
background-position: right bottom, left top;
background-repeat: no-repeat, repeat;
}
Multiple background images can be specified using either the individual
background properties (as above) or the background shorthand property.
The following example uses the background shorthand property (same result as
example above):
Example
#example1 {
background: url(img_flwr.gif) right bottom no-repeat, url([Link]) left
top repeat;
}
CSS Background Size
The CSS background-size property allows you to specify the size of
background images.
The size can be specified in lengths, percentages, or by using one of the two
keywords: contain or cover.
The following example resizes a background image to much smaller than the
original image (using pixels):
Example
#div1 {
background: url(img_flower.jpg);
background-size: 100px 80px;
background-repeat: no-repeat;
}
The two other possible values for background-size are contain and cover.
The contain keyword scales the background image to be as large as possible
(but both its width and its height must fit inside the content area). As such,
depending on the proportions of the background image and the background
positioning area, there may be some areas of the background which are not
covered by the background image.
The cover keyword scales the background image so that the content area is
completely covered by the background image (both its width and height are
equal to or exceed the content area). As such, some parts of the background
image may not be visible in the background positioning area.
The following example illustrates the use of contain and cover:
Example
#div1 {
background: url(img_flower.jpg);
background-size: contain;
background-repeat: no-repeat;
}
#div2 {
background: url(img_flower.jpg);
background-size: cover;
background-repeat: no-repeat;
}
Define Sizes of Multiple Background Images
The background-size property also accepts multiple values for background size
(using a comma-separated list), when working with multiple backgrounds.
The following example has three background images specified, with different
background-size value for each image:
Example
#example1 {
background: url(img_tree.gif) left top no-repeat, url(img_flwr.gif) right
bottom no-repeat, url([Link]) left top repeat;
background-size: 50px, 130px, auto;
}
Full Size Background Image
Now we want to have a background image on a website that covers the entire
browser window at all times.
The requirements are as follows:
Fill the entire page with the image (no white space)
Scale image as needed
Center image on page
Do not cause scrollbars
The following example shows how to do it; Use the <html> element (the
<html> element is always at least the height of the browser window). Then set
a fixed and centered background on it. Then adjust its size with the
background-size property:
Example
html {
background: url(img_man.jpg) no-repeat center fixed;
background-size: cover;
}
Hero Image
You could also use different background properties on a <div> to create a hero
image (a large image with text), and place it where you want.
Example
.hero-image {
background: url(img_man.jpg) no-repeat center;
background-size: cover;
height: 500px;
position: relative;
}
.hero-text {
text-align: center;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: white;
}
<div class="hero-image">
<div class="hero-text">
<h1 style="font-size:50px">I am John Doe</h1>
<h3>And I'm a Photographer</h3>
<button>Hire me</button>
</div>
</div>
CSS background-origin Property
The CSS background-origin property specifies where the background image is
positioned.
The property takes three different values:
border-box - the background image starts from the upper left corner of
the border
padding-box - (default) the background image starts from the upper left
corner of the padding edge
content-box - the background image starts from the upper left corner of
the content
The following example illustrates the background-origin property:
#example1 {
border: 10px solid black;
padding: 35px;
background: url(img_flwr.gif);
background-repeat: no-repeat;
background-origin: content-box;
}
CSS background-clip Property
The CSS background-clip property specifies the painting area of the
background.
The property takes three different values:
border-box - (default) the background is painted to the outside edge of
the border
padding-box - the background is painted to the outside edge of the
padding
content-box - the background is painted within the content box
The following example illustrates the background-clip property:
Example
#example1 {
border: 10px dotted black;
padding: 35px;
background: yellow;
background-clip: content-box;
}
CSS Advanced Background Properties