Articles/HTML & CSS/Setting Variables in Stylus

Setting Variables in Stylus

Unlike CSS, in Stylus you can assign expressions to variables that can be reusable throughout your stylesheets.

November 29, 2016·2 min read

Unlike CSS, in Stylus you can assign expressions to variables that can be reusable throughout your stylesheets.

Declaring Variables

Let's assume we had a set of colors that we're going to be using throughout our document for headers, and text.

Stylus Code

STYLUS
$primaryFontColor = #262626
$headerColor = darkblue

body
  color: $primaryFontColor

h1, h2, h3, h4, h5, h6
  color: $headerColor

When creating variables, you do not need to include the $ dollar symbol. I use it here, as it stands out more to me letting me know that it is in fact a variable based on how variables are defined in the programming language I use from day to day.

Stylus Output

CSS
body {
  color: #262626;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  color: #00008b;
}

This is awesome. Now we can set base colors, or anything really to manage from 1 area. This will also help us keep on track to make sure we're sticking to our brand colors and styles.

We may also want to set sizes for our primary headers and paragraphs.

Stylus Code

STYLUS
$primaryHeaderFontSize = 4em
$contentFontSize = 1em

body
  font-size: 14px

h1
  font-size: $primaryHeaderFontSize

p
  font-size: $contentFontSize

Stylus Output

CSS
body {
  font-size: 14px;
}
h1 {
  font-size: 4em;
}
p {
  font-size: 1em;
}

Property Lookup/Reference

Another amazing feature of Stylus is the ability of looking up a properties value without having to assign it to a variable. For instance, let's assume we want to create a box and center it to the page.

Stylus Code

STYLUS
.box
  position: absolute
  top: 50%
  left: 50%
  width: 100px
  height: 100px
  margin-left: -(@width / 2)
  margin-top: -(@height / 2)
  background-color: blue

You'll see above that I was able to reference the width and height by simply typing @width or @height. How cool is that?

Stylus Output

CSS
.box {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 100px;
  height: 100px;
  margin-left: -50px;
  margin-top: -50px;
  background-color: #00f;
}