A hexadecimal color can be represented as #RRGGBB
:
The value of the Hexadecimal can range from 00 to FF
. So, the maximum value can be FFFFFF
- white color, and the minimum value can be 000000
- black color.
In JavaScript, we add 0x
before a hexadecimal number:
let testHexVal = 0xff; // 255
let maxColorVal = 0xFFFFFF; // 16777215
Let’s create a random number from this maxVal:
let maxVal = 0xFFFFFF; // 16777215
let randomNumber = Math.random() * maxVal; // returns a floating point random number
// convert the floating-point number to an integer
randomNumber = Math.floor(randomNumber);
Now, that we have a random number generated for the hex, let’s convert that integer into hex again using the toString(16)
method:
let maxVal = 0xFFFFFF; // 16777215
let randomNumber = Math.random() * maxVal;
randomNumber = Math.floor(randomNumber);
let randColor = randomNumber.toString(16);
The code above will generate a random color; but, there may be a chance that the string length will be less than 6
. In that case, we can use padStart
or padEnd
to ensure that the string length is at least 6
. If the string length is less than 6
, the padStart/padEnd
will add the filler values we passed to the function:
let maxVal = 0xFFFFFF; // 16777215
let randomNumber = Math.random() * maxVal;
randomNumber = Math.floor(randomNumber);
randomNumber = randomNumber.toString(16);
let randColor = randomNumber.padStart(6, 0);
Imagine that the generated randomNumber is 123b
, and the length of 123b
is less than 6
. In this case, the padStart
method will add 0
to the beginning of the randomNumber
until length becomes 6
.
The randColor will be 00123b
The complete function to generate a random color is:
function generateRandomColor(){let maxVal = 0xFFFFFF; // 16777215let randomNumber = Math.random() * maxVal;randomNumber = Math.floor(randomNumber);randomNumber = randomNumber.toString(16);let randColor = randomNumber.padStart(6, 0);return `#${randColor.toUpperCase()}`}console.log(generateRandomColor());
Another way to write the above function is:
const randColor = () => {return "#" + Math.floor(Math.random()*16777215).toString(16).padStart(6, '0').toUpperCase();}console.log(randColor());