Sub navigation

How to make CSS DRY

I have seen these tricks in many places. But not as many as expected. All these tricks save you time and follow the DRY principle (sort of).

Use hsl()

These 3 colors are the same color with different lightness. The last percentage sets the lightness, but keeps the color and the darkness. Ideal for styling sites in a uniform way.

hsl(270, 60%, 50%); gives ---> Dark color

hsl(270, 60%, 70%); gives ---> Medium color

hsl(270, 60%, 90%); gives ---> Lite color

Use variables

Define all colour variables at the beginning of all CSS. Or in a separate CSS file.

:root {
  --bg: hsl(270, 60%, 98%); //background
  --dark: hsl(270, 60%, 50%);
  --medium: hsl(270, 60%, 70%);
  --lite: hsl(270, 60%, 90%);
  --hover: hsl(253, 50%, 88%);
  --select: hsl(270, 60%, 93%);
  --black:  hsl(0, 0%, 20%); //almost black
  font-size: 110%;

Use these variables instead of #adfghh or rgb(100,100,100) by using var(--dark) etc. When you change the values of the variables every element that uses this variables automatically changes accordingly.

.line {
  background-color: var(--dark);
  width: 100%;
  height: 1px;
  margin-top: 8px;
  margin-bottom: 15px;

Use rem

If you set the font-size in the root to 100% all font-sizes that are set to 1rem will be approximately 16 px. I use an accessibility standard of at least 18px which means a root size of appr 110%. You can resize all fonts by increasing or decreasing the value at root level.

:root {
  font-size: 110%;

And you use this instead of em or px when setting sizes.

p {
  font-size: 1rem;
  color var(--black);