Skip to content
On this page

CSS Style Syntax

Stylus transparently supports a regular CSS-style syntax. This means you don't need an alternative parser, or specify that a certain file uses a specific style.

Example

Below is a small style using the indented approach:

border-radius()
 -webkit-border-radius arguments
 -moz-border-radius arguments
 border-radius arguments

body a
 font 12px/1.4 "Lucida Grande", Arial, sans-serif
 background black
 color #ccc

form input
 padding 5px
 border 1px solid
 border-radius 5px
border-radius()
 -webkit-border-radius arguments
 -moz-border-radius arguments
 border-radius arguments

body a
 font 12px/1.4 "Lucida Grande", Arial, sans-serif
 background black
 color #ccc

form input
 padding 5px
 border 1px solid
 border-radius 5px

Since braces, colons, and semi-colons are optional, we could write this example just as we would with normal CSS:

border-radius() {
  -webkit-border-radius: arguments;
  -moz-border-radius: arguments;
  border-radius: arguments;
}

body a {
  font: 12px/1.4 "Lucida Grande", Arial, sans-serif;
  background: black;
  color: #ccc;
}

form input {
  padding: 5px;
  border: 1px solid;
  border-radius: 5px;
}
border-radius() {
  -webkit-border-radius: arguments;
  -moz-border-radius: arguments;
  border-radius: arguments;
}

body a {
  font: 12px/1.4 "Lucida Grande", Arial, sans-serif;
  background: black;
  color: #ccc;
}

form input {
  padding: 5px;
  border: 1px solid;
  border-radius: 5px;
}

While Stylus doesn't support every possible CSS-like syntax, it can understand even such code:

      border-radius() {
        -webkit-border-radius: arguments;
        -moz-border-radius: arguments;
        border-radius: arguments;
      }

  body a
  {
    font: 12px/1.4 "Lucida Grande", Arial, sans-serif;
      background: black;
    color: #ccc;
  }

      form input {
        padding: 5px;
    border: 1px solid;
        border-radius: 5px;
        }
      border-radius() {
        -webkit-border-radius: arguments;
        -moz-border-radius: arguments;
        border-radius: arguments;
      }

  body a
  {
    font: 12px/1.4 "Lucida Grande", Arial, sans-serif;
      background: black;
    color: #ccc;
  }

      form input {
        padding: 5px;
    border: 1px solid;
        border-radius: 5px;
        }

Since we may mix and match the two variants, the following is valid as well:

border-radius()
  -webkit-border-radius: arguments;
  -moz-border-radius: arguments;
  border-radius: arguments;

body a {
  font: 12px/1.4 "Lucida Grande", Arial, sans-serif;
  background: black;
  color: #ccc;
}

form input
  padding: 5px;
  border: 1px solid;
  border-radius: 5px;
border-radius()
  -webkit-border-radius: arguments;
  -moz-border-radius: arguments;
  border-radius: arguments;

body a {
  font: 12px/1.4 "Lucida Grande", Arial, sans-serif;
  background: black;
  color: #ccc;
}

form input
  padding: 5px;
  border: 1px solid;
  border-radius: 5px;

Variables, functions, mixins, and all the other features provided by Stylus still work as expected:

main-color = white
main-hover-color = black

body a {
 color: main-color;
 &:hover { color: main-hover-color; }
}

body a { color: main-color; &:hover { color: main-hover-color; }}
main-color = white
main-hover-color = black

body a {
 color: main-color;
 &:hover { color: main-hover-color; }
}

body a { color: main-color; &:hover { color: main-hover-color; }}

There are a few caveats to this rule: since the two styles may be mixed and matched, some indentation rules still apply. So although not every plain-CSS stylesheet will work with zero modification, this feature allows those who prefer CSS syntax to continue doing so while leveraging Stylus' other powerful features.