Hello wizards, I hope you are doing great. Today in this blog you’ll learn how to create the "Gradient Color Generator" project using HTML, CSS & JavaScript.
Preview
In the above video, you’ve seen the preview of the "Gradient Color Generator" project and I hope now you are able to create this type of project. If not, I have provided all the HTML CSS and JavaScript code below.
Gradient Color Generator [Source Code]
To get the following HTML, CSS & JS code for the Gradient Color Generator project. You need to create three files one is a HTML file, second one is a CSS file and the another one is JS file. After creating these three files then you can copy-paste the given codes on your document.
Remember, you’ve to create a file with .html extension for HTML code, .css extension for CSS code and .js for JavaScript code.
You can also download all source code files from the given download button.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Gradient Color generator</title> <link rel="stylesheet" href="style.css"> <!-- Font awesome cdn link--> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" /> </head> <body> <div class="container"> <i class="fa-solid fa-rotate refreshBtn"></i> <div class="gradientColorBox"></div> <div class="direction"> <p>Direction</p> <div class="selectContainer"> <select> <option value="to top">Top</option> <option value="to right top">Right top</option> <option value="to right">Right</option> <option value="to right bottom">Right bottom</option> <option value="to bottom">Bottom</option> <option value="to left bottom">Left bottom</option> <option value="to left">Left</option> <option value="to left top" selected>Left top</option> </select> </div> </div> <div class="colorContainer"> <p>Colors</p> <div class="colors"> <input type="color" value="#9acd32"> <input type="color" value="#daff44"> </div> </div> <textarea disabled>background: linear-gradient(to left top, #9acd32, #daff44);</textarea> <div class="button"> <button class="copyBtn">Copy Code</button> </div> </div> <script src="index.js"></script> </body> </html>
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap"); * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Poppins", sans-serif; } body { padding: 0 10px; display: flex; align-items: center; justify-content: center; min-height: 100vh; background-color: yellowgreen; } .container { width: 450px; background: #fff; padding: 30px; border-radius: 10px; position: relative; } i { position: absolute; top: 10px; right: 10px; cursor: pointer; } i:active { transform: rotate(45deg); } .gradientColorBox { height: 250px; width: 100%; border-radius: 10px; background: linear-gradient(to left top, #9acd32, #daff44); } p { font-size: 20px; margin: 5px 0; } .selectContainer { border-radius: 5px; height: 50px; padding: 0 10px; line-height: 50px; border: 2px solid black; cursor: pointer; } .selectContainer select { width: 100%; border: none; outline: none; font-size: 18px; cursor: pointer; background: none; } .colorContainer { margin: 10px 0; } .colorContainer .colors { display: flex; justify-content: space-between; align-items: center; } .colors input { width: 49%; height: 50px; border: 2px solid black; padding: 4px; } textarea { color: black; width: 100%; font-size: 18px; resize: none; padding: 15px; margin: 10px 0; border-radius: 5px; border: 2px solid black; } .button { display: flex; align-items: center; justify-content: center; } .copyBtn { color: black; background: #9acd32; width: 100%; height: 50px; border: none; font-size: 20px; border-radius: 5px; cursor: pointer; } .copyBtn:active { transform: scale(0.95); }
const refreshBtnEl = document.querySelector(".refreshBtn"); const gradientColorBoxEl = document.querySelector(".gradientColorBox"); const selectMenuEl = document.querySelector("select"); const colorInputsEl = document.querySelectorAll(".colors input"); const textareaEl = document.querySelector("textarea"); const copyBtnEl = document.querySelector(".copyBtn"); // Code will copy to the user clipboard const copyCode = () => { navigator.clipboard.writeText(textareaEl.value); copyBtnEl.innerText = "Code Copied"; setTimeout(() =>{ copyBtnEl.innerText = "Copy Code" }, 2000); } // it create and returns a random color in hexadecimal code. const getRandomColor = () => { const randomHexColor = Math.floor(Math.random() * 0xffffff).toString(16); return `#${randomHexColor}`; } // If isRandom is true generates a random color or else its generates custom color what user as given. const generateGradient = (isRandom) => { if(isRandom) { colorInputsEl[0].value = getRandomColor(); colorInputsEl[1].value = getRandomColor(); } const gradient = `linear-gradient(${selectMenuEl.value}, ${colorInputsEl[0].value}, ${colorInputsEl[1].value})`; gradientColorBoxEl.style.background = gradient; textareaEl.value = `background: ${gradient};`; } // it automatically updates if you change the input of colors colorInputsEl.forEach( input => input.addEventListener("input", () => generateGradient(false)) ); // when we click on refresh button it creates random colors refreshBtnEl.addEventListener("click", () => generateGradient(true)); // it automatically updates if you change any option from the selections selectMenuEl.addEventListener("change", () => generateGradient(false)); // when we click on copy code button it copies the code to the user clipboard copyBtnEl.addEventListener("click", copyCode);