How to Create Random Color Palette in HTML CSS & JavaScript

Create Random Color Palette

Creating a random color palette in HTML, CSS, and JavaScript involves generating random colors using JavaScript and then applying those colors to HTML elements via CSS. Here’s a simple example to demonstrate how you can do this:

1. HTML Structure

First, create a basic HTML structure. You can have a container where your color palettes will be displayed.

<!DOCTYPE html>

<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Color Palette Generator</title>
    <link rel="stylesheet" href="style.css">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="script.js" defer></script>
  </head>
  <body>
    <ul class="container"></ul>
    <button class="refresh-btn">Refresh Palette</button>

  </body>
</html>

 

2. CSS Styling

Next, add some basic styling to your CSS file to define how the color boxes should look.

/* Import Google font */
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600&display=swap');
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Open Sans', sans-serif;
}
body {
  background: #E3F2FD;
}
.container {
  margin: 20px;
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
}
.container .color {
  margin: 12px;
  padding: 7px;
  list-style: none;
  cursor: pointer;
  text-align: center;
  background: #fff;
  border-radius: 6px;
  box-shadow: 0 10px 25px rgba(52,87,220,0.08);
  transition: all 0.3s ease;
}
.container .color:active {
  transform: scale(0.95);
}
.color .rect-box {
  width: 185px;
  height: 188px;
  border-radius: 4px;
}
.color:hover .rect-box {
  filter: brightness(107%);
}
.color .hex-value {
  display: block;
  color: #444;
  user-select: none;
  font-weight: 500;
  font-size: 1.15rem;
  margin: 12px 0 8px;
  text-transform: uppercase;
}
.refresh-btn {
  position: fixed;
  left: 50%;
  bottom: 40px;
  color: #fff;
  cursor: pointer;
  outline: none;
  font-weight: 500;
  font-size: 1.1rem;
  border-radius: 5px;
  background: #8A6CFF;
  padding: 13px 20px;
  border: 2px solid #fff;
  transform: translateX(-50%);
  box-shadow: 0 15px 30px rgba(52,87,220,0.2);
  transition: all 0.3s ease;
}
.refresh-btn:hover {
  background: #704dff;
}

@media screen and (max-width: 500px) {
  .container {
    margin: 10px;
  }
  .container .color {
    margin: 8px;
    padding: 5px;
    width: calc(100% / 2 - 20px);
  }
  .color .rect-box {
    width: 100%;
    height: 148px;
  }
  .color .hex-value {
    font-size: 1.05rem;
  }
  .refresh-btn {
    font-size: 1rem;
  }
}

 

3. JavaScript for Generating Random Colors

Now, you can add the JavaScript that will generate random colors and apply them to the color boxes

const container = document.querySelector(".container");
const refreshBtn = document.querySelector(".refresh-btn");

const maxPaletteBoxes = 32;

const generatePalette = () => {
    container.innerHTML = ""; // clearing the container
    for (let i = 0; i < maxPaletteBoxes; i++) {
        // generating a random hex color code
        let randomHex = Math.floor(Math.random() * 0xffffff).toString(16);
        randomHex = `#${randomHex.padStart(6, "0")}`;
        
        // creating a new 'li' element and inserting it to the container
        const color = document.createElement("li");
        color.classList.add("color");
        color.innerHTML = `<div class="rect-box" style="background: ${randomHex}"></div>
                           <span class="hex-value">${randomHex}</span>`;
        // adding click event to current li element to copy the color
        color.addEventListener("click", () => copyColor(color, randomHex));
        container.appendChild(color);
    }
}
generatePalette();

const copyColor = (elem, hexVal) => {
    const colorElement = elem.querySelector(".hex-value");
    // Copying the hex value, updating the text to copied, 
    // and changing text back to original hex value after 1 second
    navigator.clipboard.writeText(hexVal).then(() => {
        colorElement.innerText = "Copied";
        setTimeout(() => colorElement.innerText = hexVal, 1000);
    }).catch(() => alert("Failed to copy the color code!")); // showing alert if color can't be copied
}

refreshBtn.addEventListener("click", generatePalette);

 

4. Explanation

  • HTML: The structure includes a container for color boxes and a button to generate random colors.
  • CSS: Provides basic styling to make the color boxes look nice and centers everything on the page.
  • JavaScript: The getRandomColor() function generates a random hex color code. The generateRandomColors() function applies these colors to each .color-box. The button triggers the color generation when clicked.

5. Running the Code

To see it in action, you can create three files (index.html, styles.css, and script.js), paste the corresponding code into each, and open the index.html file in your browser. Each time you click the button, the color palette will update with new random colors.

CEO Piyush Gupta


Reviews

There are no reviews yet. Be the first one to write one.


0.0
Rated 0 out of 5
0 out of 5 stars (based on 0 reviews)
Excellent0%
Very good0%
Average0%
Poor0%
Terrible0%