Hey everyone! I’m trying to set up a webpage that can change its background color randomly when you click a button. I’ve got some code that changes the color on page load, but I’m stuck on how to add a button to trigger it whenever I want. Here’s what I’ve got so far:
<!DOCTYPE html>
<html>
<head>
<title>Color Shifter</title>
</head>
<body>
<script>
function changeBackgroundHue() {
let hue1 = Math.floor(Math.random() * 256);
let hue2 = Math.floor(Math.random() * 256);
let hue3 = Math.floor(Math.random() * 256);
let newColor = `rgb(${hue1},${hue2},${hue3})`;
console.log(newColor);
document.body.style.backgroundColor = newColor;
}
changeBackgroundHue();
</script>
</body>
</html>
Can anyone help me figure out how to add a button that calls this function when clicked? Thanks in advance!
Place this code after your existing script, but before the closing tag. This way, the button will trigger the color change function each time it’s clicked.
Remember to remove or comment out the initial changeBackgroundHue() call if you want the color to change only when the button is pressed. Hope this helps!
I’ve implemented something similar for a client’s website recently. Here’s a pro tip: instead of using RGB values, consider using HSL (Hue, Saturation, Lightness) for more vibrant and controlled color changes. You can modify your function like this:
function changeBackgroundHue() {
let hue = Math.floor(Math.random() * 360);
let saturation = 70 + Math.random() * 30; // 70-100%
let lightness = 40 + Math.random() * 20; // 40-60%
document.body.style.backgroundColor = hsl(${hue}, ${saturation}%, ${lightness}%);
}
This approach gives you more control over the brightness and intensity of colors. As for the button, the suggestions from others are spot-on. Just remember to style your button to match your site’s aesthetic. Happy coding!