Sass Import

Sass Import

We can follow CSS progress by following the development of its pre-processors. Which preprocessor to use is a different time theme, but it’s really necessary to use one because they allow features that don't exist in CSS yet. (We have also written about the ones that exist though e.g. columns, underline, font size)

One of the preprocessors is Sass and one of these extra features is import and that is the theme of this post. My next post is the export feature, so you'll have something to look forward to.

Before you can use import feature or Sass at all, you need to set Sass on your project for which sass guide will presumably help.

@import

The import feature works pretty much as expected. You can import a .scss file in another one, and all the variables in it will be available. The syntax is @import and name of the scss file. The scss file you can define without .scss extension and it will work.

 @import "colors";
 @import "fonts";
 @import "buttons";
 @import "forms";

or short form:

 @import "colors", "fonts", "buttons", "forms";

In this example, scss file with this code can use all styles defined in colors.scss , fonts.scss, btn_styles.scss and form_styles.scss files in the current directory. The content of these files will replace the @import statement.

Partials

Sass compiles all the .scss or .sass files inside the directory it’s watching. If you don't want to compile it directly you don't need to.

You can tell Sass not to compile a file with the file’s name. If you add an underscore to the start of the file name, Sass won’t compile it. So, if you don’t want colors.scss to compile to colors.css, name the file _colors.scss instead. Files named this way are called partials in Sass terminology. The rule about import without extension works here too.

Partials are used as general style files (reset, colors, fonts, typography, navigation, forms, buttons, grids, figures, header, sidebar, footer...) and other files usually work as page styles.

Nested @import

We have already written about nesting and how important it is in CSS pre-processors.

Even if it's typical to include your @import statements at the top of the importing file, you can nest @import wherever. The example which follows will explain the second most common usage of this feature.

_background.scss

 div{
     background-color:#ababab;
 }

homepage.scss

 section{
     @import "background";
 }

Assuming the two files are located in the same folder, the code would compile to (homepage.css):

 section div{
     background-color:#ababab;
 }

So you can import the partial file directly inside the block of code, and it's going to be compiled just like expected.

Extra

Just to be sure it's clear, with defining the file to import it's possible to use all folders' common definitions.

Example 1:

 @import "style/*" 

This way all the files in the style folder will be compiled.

Example 2:

 @import "../../style/buttons" 

This way buttons.scss in the corresponding place from the current file will be compiled.

Closing Word

If you're using Sass you better make a good structure for your stylesheets, because it's almost all about that. The structure without @import in Sass is impossible to make so....

For more about Sass and CSS features soon subscribe to our newsletter.