The other day, I read an article about how Radiohead's graphic designer, Stanley Donwood, got inspired by words from billboards — and the combination of the colors red, green, blue, yellow, orange, black and white — for the cover to "Hail to the Thief" by Radiohead.
The cover has much more graphic elements than this, but let's try to mimic the random color-combinations and the texts in CSS and JavaScript.
First, I asked chatGPT to generate an array of a 100 words, inspired by the cover:
const words = ["Fear", "Control", "Truth", "Lies" ...] Next, I grabbed the primary colors:
const colors = ['#D0001D', '#0D5436', '#093588', '#FDA223', '#F8551A', '#101624', '#EAEFF0']; A small method returns a random background-color, and makes sure that the text-color is not the same:
function getRandomColorPair() { const bgIndex = Math.floor(Math.random() * colors.length); let cIndex; do { cIndex = Math.floor(Math.random() * colors.length); } while (cIndex === bgIndex); return { bg: colors[bgIndex], c: colors[cIndex] }; } And finally, the words and colors are added to <li>-tags:
const canvas = document.querySelector('ul'); canvas.innerHTML = words.map(word => { const { bg, c } = getRandomColorPair(); return `<li style="--bg: ${bg};--c: ${c};">${word}</li>`; }).join(''); Styling
I browsed handwriting fonts on Google Fonts, and found a great match: Pangolin.
Next, a few styles for the <li>-elements:
li { background-color: var(--bg); color: var(--c); font-family: "Pangolin", system-ui, sans-serif; font-size: 5cqi; letter-spacing: -0.075em; padding-inline: 1ch; text-transform: uppercase; } And ... almost done. Just need a few styles on the <ul>-element:
ul { all: unset; container-type: inline-size; display: flex; flex-wrap: wrap; justify-content: center; list-style: none; } And we get:
That looks a little bit boring, doesn't it?
Let's add a squiggly SVG-filter:
ul { filter: url('#squiggly-0'); } Note: See the SVG-code for the filter in the CodePen below.
And now we get:
Much better!
Here's the CodePen demo – re-fresh to get new, random color-combinations:


Top comments (2)
This is a very nice idea. If you have young kids, and you randomize the words, I think they will quickly learn to read.
Thank you