Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Background Image with CSS
📖 Scenario: You are creating a simple webpage for a local coffee shop. They want a warm, inviting background image on their homepage to attract visitors.
🎯 Goal: Build a webpage with a full-screen background image that covers the entire viewport and stays fixed when scrolling.
📋 What You'll Learn
Use a semantic HTML5 structure with <main> and <header>.
Add a background image to the body using CSS.
Make sure the background image covers the entire screen and stays fixed when scrolling.
Use CSS properties background-image, background-size, background-attachment, and background-position.
Ensure the page is responsive and the background image scales nicely on different screen sizes.
💡 Why This Matters
🌍 Real World
Background images are common on websites to create mood and branding. Knowing how to add and style them is essential for web design.
💼 Career
Web developers often need to implement background images that are responsive and accessible, ensuring good user experience across devices.
Progress0 / 4 steps
1
Create the HTML structure
Create an HTML file with a body containing a <header> with the text "Welcome to Cozy Coffee" and a <main> section with the text "Enjoy your favorite coffee here."
CSS
Hint
Use semantic tags like <header> and <main> inside the <body>.
2
Add CSS file link and background image URL
Add a <link> tag inside the <head> to link a CSS file named styles.css. Then, in styles.css, create a CSS variable called --bg-image and set it to the URL "https://example.com/coffee-background.jpg".
CSS
Hint
Use <link rel="stylesheet" href="styles.css"> inside <head>. In CSS, use :root to define --bg-image.
3
Apply the background image to the body
In styles.css, add CSS rules to the body selector to set the background image using the --bg-image variable. Also set background-size to cover, background-position to center, and background-attachment to fixed.
CSS
Hint
Use background-image: var(--bg-image); and set the other background properties as instructed.
4
Add basic styling for text and ensure accessibility
In styles.css, add CSS to set the body text color to #fff for contrast. Also add padding of 2rem to header and main. Finally, add aria-label="Main content" to the <main> tag in the HTML for accessibility.
CSS
Hint
Set color: #fff; on body and add padding: 2rem; to header and main. Add aria-label="Main content" to the <main> tag.
Practice
(1/5)
1. What does the CSS property background-image do on a webpage?
easy
A. It adds a picture behind the content of an element.
B. It changes the text color of an element.
C. It sets the size of the webpage.
D. It removes all images from the page.
Solution
Step 1: Understand the purpose of background-image
This property is used to place an image behind the content inside an element, like a background picture.
Step 2: Compare with other options
Changing text color or page size is done by other CSS properties, not background-image.
Final Answer:
It adds a picture behind the content of an element. -> Option A
Quick Check:
Background image = picture behind content [OK]
Hint: Background image means picture behind content [OK]
Common Mistakes:
Confusing background-image with text color
Thinking it changes page size
Assuming it removes images
2. Which of the following is the correct CSS syntax to set a background image from a file named photo.jpg?
easy
A. background-image: url('photo.jpg');
B. background-image = url('photo.jpg');
C. background-image: 'photo.jpg';
D. background-image(url='photo.jpg');
Solution
Step 1: Recall correct CSS property syntax
CSS properties use a colon : to assign values, not an equals sign or parentheses.
Step 2: Check the value format for background-image
The value must be url('filename') with parentheses and quotes around the filename.
Final Answer:
background-image: url('photo.jpg'); -> Option A
Quick Check:
Correct CSS uses colon and url() [OK]
Hint: Use colon and url('filename') for background-image [OK]
Common Mistakes:
Using equals sign instead of colon
Omitting url() function
Using parentheses incorrectly
3. What will be the visual result of this CSS on a <div>?
A. A 200x200 box with the tree.png image stretched to fill the box ignoring aspect ratio.
B. A 200x200 box with the tree.png image repeated to fill the box.
C. A 200x200 box with no image visible because background-repeat is no-repeat.
D. A 200x200 box with the tree.png image centered and fully visible without repeating.
Solution
Step 1: Analyze background-repeat and background-position
background-repeat: no-repeat means the image shows only once. background-position: center places it in the middle.
Step 2: Understand background-size: contain
This scales the image to fit inside the box while keeping its shape, so it is fully visible.
Final Answer:
A 200x200 box with the tree.png image centered and fully visible without repeating. -> Option D
Quick Check:
no-repeat + center + contain = single centered image [OK]
Hint: no-repeat + center + contain = one centered image fully visible [OK]
Common Mistakes:
Thinking no-repeat hides the image
Assuming image repeats anyway
Confusing contain with stretch
4. Identify the error in this CSS code that tries to set a background image:
body {
background-image: url(tree.png);
background-repeat: no-repeat
background-position: center;
}
medium
A. background-position cannot be center.
B. Incorrect URL syntax in background-image.
C. Missing semicolon after background-repeat property.
D. background-repeat should be repeat, not no-repeat.
Solution
Step 1: Check each CSS property line
background-repeat line is missing a semicolon at the end, which breaks CSS parsing.
Step 2: Verify other lines
background-image URL syntax is correct without quotes (allowed but quotes recommended), background-position: center is valid, and no-repeat is a valid value.
Final Answer:
Missing semicolon after background-repeat property. -> Option C
Quick Check:
Every CSS property line needs a semicolon [OK]
Hint: Check for missing semicolons after each CSS property [OK]
Common Mistakes:
Forgetting semicolon after properties
Thinking URL needs quotes always
Misunderstanding valid background-position values
5. You want a background image to cover the entire page, keep its aspect ratio, and stay fixed when scrolling. Which CSS properties and values should you use together?
hard
A. background-image: url('bg.jpg'); background-repeat: repeat; background-position: top left;
B. background-image: url('bg.jpg'); background-size: cover; background-attachment: fixed;
C. background-image: url('bg.jpg'); background-size: contain; background-attachment: scroll;
D. background-image: url('bg.jpg'); background-size: 100% 100%; background-attachment: fixed;
Solution
Step 1: Understand background-size: cover
This makes the image fill the entire area while keeping its shape, cropping if needed.
Step 2: Use background-attachment: fixed
This keeps the background image fixed in place when the user scrolls the page.
Step 3: Check other options
background-image: url('bg.jpg'); background-repeat: repeat; background-position: top left; repeats the image and positions top left, not covering entire page. background-image: url('bg.jpg'); background-size: contain; background-attachment: scroll; uses contain which may leave empty space. background-image: url('bg.jpg'); background-size: 100% 100%; background-attachment: fixed; stretches image ignoring aspect ratio.
Final Answer:
background-image: url('bg.jpg'); background-size: cover; background-attachment: fixed; -> Option B
Quick Check:
cover + fixed = full page image stays on scroll [OK]
Hint: Use cover for full area and fixed to lock image on scroll [OK]
Common Mistakes:
Using contain instead of cover for full coverage
Forgetting background-attachment fixed for fixed image