ometimes, deciding on a color scheme for a site is more of a problem than is implementing it. I’ve sat on committees intended to design Web sites by consensus and I can tell you from experience: Getting more than two people to settle on a color scheme is no easy task! A little programming helps though. You can simplify color scheme selection by letting people see how their color preferences interact on-screen. ![]()
Although displaying a Web-safe color palette is relatively easy, simply displaying the colors doesn’t give users an easy way to see how selected colors interact with each other. How can you get people to choose and agree on sensible colors for a site?![]()
Make the Web-safe color display interactive, using JavaScript to apply selected colors to some sample content and let users see immediately how their chosen colors look together. Figure 1 shows how the completed application looks.
![]() |
Create a Web-safe Palette This solution has two goals?displaying the Web-safe palette and making it interactive. Displaying the palette is easy; you use some nested loops and a simple array to build a table whose cells each represent a different entry in the palette. A pair of radio buttons on the page lets users choose whether they’re selecting a foreground or a background color. Finally, to make the display interactive, you can connect the onClick event for each colored cell in the table to a function that applies the selected color to either the foreground or background color of a separate display?based on the currently selected radio button. Simple event handlers for the radio buttons maintain the foreground/background value, and a “dummy” tag holds content so users can see the effect of their chosen colors immediately.
To get started, open up your favorite text editor and add the following code:
The CSS Rules shown above position elements on the page. Next, create three tags to hold the color table, the radio button controls, and a test area where the color effects appear. Because each of the
cells will be clickable, the td rule turns the standard cursor into the hand cursor when users move the mouse over a table cell. Note that the rules don’t specify any colors?users will determine the colors in the testArea by clicking on the cells in the palette.
| Add the following between the tags:
The colorTable ‘s content will be generated by a function called createTable(). Also note that the controls
possesses two radio buttons?one to set the foreground color and one to set the background color. Each radio button has an onClick event that sets the value of a flag?colorToSet?in the script to either “fore” or “back”. The function that displays the selected colors in the testArea
will check this flag to see which property to change. The controls
also contains labels that display the current color values of the foreground and background properties of the testArea. Initially, these values are set to black text (#000000) on a white (#ffffff) background. Finally, the testArea
contains some placeholder text so users can see how the colors interact.
Make the Palette Interactive
The preceding code creates a table by using three nested for loops. The colors array holds the hexadecimal color values acceptable for each of the red, green, and blue components of a Web-safe color palette. The code then uses the nested loops to iterate through each of the values. The i loop represents the red component, the j loop represents the green component, and the k loop represents the blue component of the color to be displayed. By including the HTML table markup tags and looping through the acceptable values of the Web-safe palette stored in the colors array, the createTable() function creates a table with 6 colors and 36 rows?the 216 colors of the Web-safe color palette. You may have noticed that as the code constructs the tags, it also adds an onClick event handler that points to a function called setColor(). The setColor() function takes the
| element itself as an argument (the "this" argument). You'll need to add the setColor() function?and the colorToSetFlag mentioned earlier to the page. Add the following to the script:
|
When the page first loads, the colorToTest flag is set to 'fore', but the flag value changes from 'fore' to 'back' as users change the selected radio button. The setColor() function uses DOM properties to access the text stored in the element passed to the function. It then uses that text (the color value) to apply the selected color to either the foreground or background of the testArea
| depending on the current colorToSet flag value. Finally, the setColor() function sets the innerHTML property of either the foreground or background labels to the selected color value.
That's all there is to it! You can use this Web-safe color palette application to help select a color scheme for anything from a single element to an entire site. You could easily extend the application to let users change the font, weight, and size of the text in the test area. In fact, the closer you make the content of the test area to the actual content of the intended site, the more likely it is that the process of selecting a color scheme will go smoothly. Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience. Related Posts
About Our Editorial ProcessAt DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere. See our full editorial policy. ![]() What Is the Cloudflare KV Cache Leak? GLM-5.3 Bug Explained
Steve Gickling
October 29, 2026
8:13 AM
![]() Leveraging Model Context Protocol (MCP) & Cursor for Faster Payment Gateway Integration
Rashan Dixon
October 28, 2026
3:50 PM
![]() What Is the Next.js RCE Vulnerability in Image Optimization?
Rashan Dixon
October 28, 2026
1:30 PM
![]() What Is the Node2Shell Vulnerability in Node.js?
John Rampton
October 27, 2026
8:04 AM
![]() What Is the OpenCode Breach? Distillation Attack Explained
Deanna Ritchie
October 26, 2026
7:44 AM
![]() What Is GitHub Copilot Computer Use? GitHub’s New Desktop Agent Explained
Rashan Dixon
October 23, 2026
8:08 AM
![]() The SaaS Release Bottleneck: Why Faster Development Doesn’t Always Mean Faster Delivery
Rashan Dixon
October 22, 2026
3:41 PM
![]() Choosing an Online Graduate Program: Accreditation, Flexibility, Support and What You Should Know.Â
John Rampton
October 22, 2026
3:08 PM
![]() What Is SlugFest, the npm Trusted Publishing Vulnerability?
Deanna Ritchie
October 22, 2026
1:00 PM
![]() What Is VS Code Agent Sandboxing? Microsoft’s New AI Agent Security Layer Explained
Steve Gickling
October 21, 2026
12:44 PM
![]() Meta Muse Wonder: Pricing, Benchmarks, and What It Means for Developers
Rashan Dixon
October 20, 2026
7:56 AM
![]() What Are GitHub Actions Workflow Lockfiles?
Deanna Ritchie
October 19, 2026
9:52 AM
![]() What Is Grok Voice 3.0? xAI’s New Speech-to-Speech Model Explained
Steve Gickling
October 16, 2026
10:27 AM
![]() Google’s Gemini Argon Wins Through Reach, Not Revolution
Joe Rothwell
October 15, 2026
10:50 AM
![]() What Is the GhostApproval Vulnerability in AI Coding Assistants?
Johannah Lopez
October 15, 2026
8:09 AM
![]() Startup Challenges DoorDash With $1 Delivery Fee
Steve Gickling
October 14, 2026
4:01 PM
![]() AI Insiders Urge New York Oversight
Sumit Kumar
October 14, 2026
3:03 PM
![]() Pro-AI Political Group Builds Bipartisan War Chest
Steve Gickling
October 14, 2026
1:36 PM
![]() Prysm Capital Leader Links Parenting to Investing
Sumit Kumar
October 14, 2026
11:43 AM
![]() McDonald’s Faces Antitrust Suit Over AI Pricing
Rashan Dixon
October 14, 2026
11:11 AM
![]() OpenAI Addresses Australian Health Site Hack Probe
Rashan Dixon
October 14, 2026
11:04 AM
![]() Industry Leaders Sign White House AI Accord
Kirstie Sands
October 14, 2026
10:37 AM
![]() What Is the AgentCorruption Vulnerability in AWS AgentCore?
Priya Nandakumar
October 14, 2026
7:39 AM
![]() Lincoln Lab Tracks AI Hardware Since 2018
Rashan Dixon
October 13, 2026
2:54 PM
![]() Divided Court Rejects AI Lab’s Rights Claims
Rashan Dixon
October 13, 2026
11:29 AM
|
























