If you're coming from milligram, there are some important differences you should be aware of.

.container replaced by article and section

milligram defined a .container selector that served as a wrapper for .row and .column elements:

.container {
  margin: 0 auto;
  max-width: 112.0rem;
  padding: 0 2.0rem;
  position: relative;
  width: 100%;

This has been replaced by the following rules in the "theme" section of sscaffold:

main article,
main section {
    padding: 7.5rem 1.0rem;
    position: relative;
    width: 100%;

main section > *,
main article > * {
    max-width: 80rem;
    margin-left: auto;
    margin-right: auto;

This means that section and article elements inside main are 100% width, but direct child elements of section or article are width-constrained and centered. There are two main reasons for this change:

  • To stay aligned with this project's goal to encourage semantic html;
  • To allow for greater design flexibility

On that second point, milligram's default 112-rem max-width on .container elements prevents sites from easily applying background colors, images, or other styles to container elements that stretch fully out to both sides of the viewport. With sscaffold, each section of a page can have its own styling while its descendant elements still get laid out in a milligram-like way.

You can find a code example on the Flebox-Based Columns page.

Rows need a block-level container

To get the constrained-width, centered-on-the-page effect with milligram-style row elements, they must have at least one block-level parent between them and the section or article ancestor.

.label-inline replaced by label.inline

The .label-inline class selector has been replaced by a simpler .inline class selector on label and legend elements.


Tables regrettably need a block-level wrapper element with a table-container class. There's more explanation about this over on the table gotcha page.

Colors and typography

A slightly different default font and color scheme has been selected, not because there was anything wrong with milligram's, but because it seemed appropriate to not directly copy its default style.

Reporting other differences

If you have encountered a difference not documented here, please open an issue on sscaffold's github page.