The ability to dynamically change an element‘s background color in JavaScript is an essential skill for front-end web development. Whether you want to highlight important information, color code elements, or just enhance visual appeal, controlling background colors allows you to create more engaging user experiences.
In this comprehensive guide, we‘ll explore the ins and outs of changing background colors in JavaScript.
Overview of Changing Background Colors
Before diving into code, let‘s review some key points about changing background colors in JavaScript:
- We primarily use the
styleproperty andbackgroundColorstyle to update colors - Colors can be set using common color names, HEX codes, RGB/RGBA values
- The color will update without having to reload the page
- Can change inline, multiple elements, or via CSS classes
- Great for highlighting new content, notifications, visual feedback
With the basics covered, let‘s look at some examples!
Setting a Single Element‘s Background Color
To change a single element‘s background color, we need to:
- Access the element (getElementById, querySelector, etc)
- Update its
style.backgroundColorproperty
Here‘s an example:
// Get element
const elem = document.getElementById("myElement");
// Set new background color
elem.style.backgroundColor = "lightblue";
This will dynamically change the background color of myElement to lightblue.
We access the element we want to update, then directly set the new background color value on its style object.
Some key notes:
- Can use any valid CSS color value
- HEX codes need the # prefix
- RGB/RGBA requires rgb() / rgba() syntax
- Updates happen instantly!
This makes it easy to highlight elements, provide visual feedback, and more.
Let‘s look at a full example:
<!DOCTYPE html>
<html>
<body>
<h1 id="myHeader">Hello World!</h1>
<script>
// Get h1 element
const header = document.getElementById("myHeader");
// Change color on click
header.onclick = () => {
header.style.backgroundColor = "#00ffff";
}
</script>
</body>
</html>
Now the h1 background will change to a light blue when clicked. Pretty easy!
Updating Multiple Elements
We can also efficiently update multiple elements at the same time.
For example, to change ALL paragraphs on a page:
// Get all <p> elements
const paras = document.getElementsByTagName(‘p‘);
// Loop through paragraphs
for(let p of paras) {
p.style.backgroundColor = "lightyellow";
}
This loops through all paragraphs, setting each one‘s background color.
Ways to get multiple elements:
document.getElementsByTagName()document.getElementsByClassName()document.querySelectorAll()
Then loop through the resulting HTMLCollection or NodeList, using the same style update from previous examples.
We could also store references to key elements in variables, then update them all later. Like:
// Store element references
const header = document.getElementById(‘header‘);
const footer = document.getElementById(‘footer‘);
// Later update colors
function setColors() {
header.style.backgroundColor = ‘grey‘;
footer.style.backgroundColor = ‘black‘;
}
Storing elements in variables is useful when you need to modify the same ones often.
Dynamically Adding & Removing Classes
Another approach is adding & removing CSS classes. For example:
CSS:
.blue {
background-color: lightblue;
}
.red {
background-color: pink;
}
JS:
// Get element
const box = document.getElementById("myBox");
// Add blue class
box.classList.add("blue");
// Later, remove and add red
box.classList.remove("blue");
box.classList.add("red");
Here we define CSS classes to set backgrounds. Then use classList to dynamically add/remove those classes.
This keeps CSS separate from logic, allowing easy re-use.
We can toggle classes like:
function toggleHighlight() {
// Get element
const elem = document.getElementById("highlight");
// Toggle class
elem.classList.toggle("highlight");
}
This will add/remove the highlight class on each call, handy for highlighting.
Creating Reusable Functions
For code reuse, we can wrap the logic into functions:
// Set background color
function setBGColor(elem, color) {
// Handle passed in element
if(elem) {
elem.style.backgroundColor = color;
}
}
// Usage:
setBGColor(document.getElementById("header"), "grey");
setBGColor(document.getElementById("footer"), "black");
Functions allow us to reuse the background color change logic in one place.
We can make even more complex reusable functions like:
// Toggle highlight color
function highlight(elem, on=true, color="yellow") {
// Make sure element exists
if(!elem) return;
// Determine class to toggle
const className = on ? ‘highlight‘ : ‘‘;
// Add/remove highlight class
elem.classList.add(className);
elem.classList.remove(!className);
}
// Usage:
highlight(document.getElementById("myElement")); // add highlight
highlight(anotherElement, false); // remove highlight
This encapsulates the highlight toggling & color change into a single function. Great for re-use!
Change Color on Events
Another great use case is changing color on events like:
Mouse Events:
// When mouse enters, change bg color
elem.onmouseenter = () => {
elem.style.backgroundColor = "lightblue";
}
// Back to normal on exit
elem.onmouseleave = () => {
elem.style.backgroundColor = "";
}
This creates a nice hover effect.
Click Events:
// Toggle highlight on click
elem.onclick = () => {
elem.classList.toggle(‘highlight‘);
};
Good for click feedback.
Scroll Events:
// Change header color on scroll
window.onscroll = () => {
if(window.scrollY > 0) {
// Scrolled down
header.style.backgroundColor = "grey";
} else {
// At top
header.style.backgroundColor = "transparent";
}
};
Dynamic scroll effects!
Possibilities are endless.
Important Tips
Here are some important quick tips:
- Elements must exist in DOM before updating
- Use
document.body.onloadto ensure DOM readiness - Use CSS classes to avoid repetition
- Store reused elements in variables
- Use functions to encapsulate logic
- Change colors on events for extra interactivity
Keeping these best practices in mind will ensure you have great results.
Conclusion
With the power to dynamically change element background colors, you can explore endless possibilities to enhance user experiences.
Use this guide as a JavaScript reference next time you need to highlight important info, provide visual feedback, or just make your project more vibrant!
The core concepts include:
- Updating the
style.backgroundColorproperty - Using DOM methods to access elements
- Adding/removing CSS color classes
- Responding to user events
- Encapsulating reuse logic in functions
Changing colors seems simple at first, but mastering it will take your JS skills to the next level.
So start playing with background colors today!


