Sass Fundamentals

Sass, and other preprocessors were created for a reason: CSS becomes tedious to write and difficult to maintain as an application becomes more complex.

Sass Fundamentals

Sass Fundamentals

While there have been recent major advancements in the way we organize the JavaScript in our modern web applications, CSS has comparatively hardly evolved at all. Instead, many teams rely on preprocessors such as Sass, Less, PostCSS, Stylus and others. These are essentially extensions of the foundational CSS concepts, which are compiled into regular CSS at build time.

In this course, we’ll start with regular CSS, and quickly layer on new capabilities and tools that will change the way you think about your app’s styles. Quickly, after moving on from the basics, we’ll start to see how style can be parameterized and re-used, avoiding repetition and redundancy, while keeping everything readable and maintainable.

Next, we’ll look at directives that bring imperative code concepts into stylesheets, like looping, conditional blocks and more. Finally, we’ll experiment with building our own Sass extension, where we can add new vocabulary and capabilities to the way we express styles.

  • Sass FundamentalsThe preprocessor revolution

    We'll look at some of the common CSS pitfalls that motivated the invention of these technologies, and highlight how much easier things become in the Sass world.

  • Sass FundamentalsStylish Tools

    When it comes to transforming Sass files to CSS, we have a few options. We'll learn about options you can use from the command line, and in a node build tool.

  • Sass FundamentalsEXERCISE 1 - Using the Sass CLI

    Build a shell script that transforms a Scss file into two CSS files: one that's human-friendly for a development environment, and one that's smaller for a production environment. How much of a file size savings did we get for this optimization?

  • Sass FundamentalsNested & Modular Styles

    Partials and the @import directive allow us to write stylesheets in a modular and maintainable way. We'll look at the pitfalls of the CSS @importat-rule, and how Sass provides similar capabilities while addressing some common problems.

  • Sass FundamentalsExercise 2 - DRY Styles

    Sticking to "the inception rule", refactor the Scss file you're given to take advantage of Sass nesting features

  • Sass FundamentalsExercise 3 - Partials and import

    The @import directive, combined with partials allow us to break our stylesheets up into modular units. Make all of your failing tests pass, while avoiding any new redundancy.

  • Sass FundamentalsSassScript: Variables & Operators

    Being able to store and re-use values is a game-changer, in terms of reducing redundancy and improving consistency and maintainability throughout your styles. We'll discuss variable best practices, unit conversions and more!

  • Sass FundamentalsEXERCISE 4 - Variable Math

    Make the failing tests pass, by substituting literal values with SassScript expressions. Keep units in mind, and avoid any fudge factors!

  • Sass FundamentalsLunch

    Break for lunch.

  • Sass FundamentalsBuilt-in Functions

    Sass has a treasure trove of built-in functions that allow us to expressively manipulate colors, numbers, lists, maps and more! We’ll look at what’s available, and then learn some best practices for practical and maintainable usage.

  • Sass FundamentalsMixins

    Mixins allow us to re-use basic or parameterized chunks of style, via the @extend directive, without having to introduce tons of complexity into your HTML.

  • Sass FundamentalsEXERCISE 5 - DRY Buttons

    The .button class in our app is available in a variety of colors, but there's a lot of repeated style between them. Using a combination of nested styles, color functions and mixins, design a means of generating a button of an arbitrary color (or set of colors).

  • Sass FundamentalsExtensible Styles

    The @extend directive is a powerful tool, we can use to "inherit" styles, but if over-used it has the potential to increase the size and complexity of the compiled CSS. We'll take a look at all this feature of Sass can do, some limitations as to where and how it can be applied, and some patterns for responsible use.

  • Sass FundamentalsEXERCISE 6 - Links as Buttons

    Many UI frameworks represent links with a particular class and the <button> with similar visual styles. Refactor and make use of the @extend directive to accomplish this. Your change must result in a net reduction in LOC of Scss, and no more than a 2% increase in compressed CSS filesize.

  • Sass FundamentalsControl Directives

    One of the most powerful aspects of Sass is the ability to add control flow to our sales. With the @if, @for, @each and @while directives, we can create powerful, concise and expressive styles, which are far easier to maintain and tweak than their CSS counterparts.

  • Sass FundamentalsEXERCISE 7 - Grid Generator

    Using control directives, build a mixin that generates a grid with an arbitrary number of columns. As an extra challenge, try to make the grid responsive!

  • Sass FundamentalsWrap Up

    We'll recap everything we've learned today