15.10 Style HTML pages with Sass/SCSS

Sass (https://sass-lang.com) is a CSS extension language that allows you to create CSS rules in much more flexible ways than you’d do with plain CSS. Please see its official documentation if you are interested in learning it.

The R package sass (Cheng et al. 2020) can be used to compile Sass to CSS. Based on the sass package, knitr includes two language engines: sass and scss (corresponding to the Sass and SCSS syntax, respectively) to compile code chunks to CSS. Below is a scss code chunk, with the chunk header ```{scss}:

$font-stack: "Comic Sans MS", cursive, sans-serif;
$primary-color: #00FF00;

.book.font-family-1 {
  font: 100% $font-stack;
  color: $primary-color;
}

You can also use the sass engine, and the Sass syntax is slightly different with the SCSS syntax, e.g.,

```{sass}
$font-stack: "Comic Sans MS", cursive, sans-serif
$primary-color: #00FF00

.book.font-family-1
  font: 100% $font-stack
  color: $primary-color
```

If you are reading the HTML version of this section, you will notice that the font for this page has been changed to Comic Sans, which might be surprising, but please do not panic—you are not having a stroke.

The sass/scss code chunks are compiled through the sass::sass() function. Currently you can customize the output style for the CSS code via the chunk option engine.opts, e.g., engine.opts = list(style = "expanded"). The default style is “compressed.” If you are not sure what this means, please refer to the help page ?sass::sass_options and look for the output_style argument.

References

Cheng, Joe, Timothy Mastny, Richard Iannone, Barret Schloerke, and Carson Sievert. 2020. Sass: Syntactically Awesome Style Sheets (Sass). https://github.com/rstudio/sass.