Sunday Fun: Re-creating a Radiohead cover
Mads Stoumann

Mads Stoumann @madsstoumann

About: I'm a tech director, web developer, graphic designer, musician, blogger, comicbook-geek, LEGO-collector, food lover … as well as husband and father!

Location:
Copenhagen, Denmark
Joined:
Nov 16, 2020

Sunday Fun: Re-creating a Radiohead cover

Publish Date: Jun 2 '24
4 2

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" ...]
Enter fullscreen mode Exit fullscreen mode

Next, I grabbed the primary colors:

const colors = ['#D0001D', '#0D5436', '#093588', '#FDA223', '#F8551A', '#101624', '#EAEFF0'];
Enter fullscreen mode Exit fullscreen mode

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] };
}
Enter fullscreen mode Exit fullscreen mode

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('');
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

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;
}
Enter fullscreen mode Exit fullscreen mode

And we get:

Hail to the Thief

That looks a little bit boring, doesn't it?

Let's add a squiggly SVG-filter:

ul {
  filter: url('#squiggly-0');
}
Enter fullscreen mode Exit fullscreen mode

Note: See the SVG-code for the filter in the CodePen below.

And now we get:

Filter

Much better!

Here's the CodePen demo – re-fresh to get new, random color-combinations:

Comments 2 total

  • Fakie Tap
    Fakie TapAug 28, 2024

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

Add comment