In this tutorial, we are going to learn how to pass arguments to mixins in SASS/SCSS. Mixins allow us to make our CSS more dynamic and reusable. By passing arguments to mixins, we can make our styles even more customizable.
By the end of this tutorial, you'll understand:
Prerequisites:
Mixins in SASS/SCSS
Mixins in SASS/SCSS are a way of reusing a block of CSS declarations. We define a mixin once and can then reuse it throughout our stylesheet.
Passing Arguments to Mixins
Arguments can be passed to mixins to make them more dynamic. This allows the same mixin to create different outputs depending on the argument values.
Default Values
We can give our arguments default values. If we don't pass a value to the mixin when we call it, the default value will be used.
Example 1: Basic Mixin with Arguments
Here's an example of a basic mixin that uses arguments:
@mixin border-radius($radius) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
}
.box {
@include border-radius(10px);
}
In this example, we've created a mixin called border-radius
that takes one argument - $radius
. We then include this mixin in the .box
class and pass 10px
as the argument.
Example 2: Mixin with Default Argument Values
Now, let's create a mixin with default argument values:
@mixin border-radius($radius: 5px) {
-webkit-border-radius: $radius;
-moz-border-radius: $radius;
-ms-border-radius: $radius;
border-radius: $radius;
}
.box {
@include border-radius; // will use default value of 5px
}
.round-box {
@include border-radius(15px); // overrides default value
}
In this example, the border-radius
mixin has a default value of 5px
. When we include this mixin in the .box
class without passing an argument, it uses the default value. However, in the .round-box
class, we override the default value by passing 15px
as the argument.
In this tutorial, we’ve learned how to pass arguments to mixins in SASS/SCSS. This allows us to create more dynamic and reusable styles in our CSS. We also learned how to set default values for mixin arguments.
To further your understanding, consider exploring how to pass multiple arguments to mixins and how to use keyword arguments.
Exercise 1:
Create a mixin that takes two arguments: $width
and $height
. This mixin should set the width and height of an element. Use this mixin in a class of your choice.
Solution:
@mixin dimensions($width, $height) {
width: $width;
height: $height;
}
.box {
@include dimensions(100px, 200px);
}
Exercise 2:
Modify the dimensions
mixin from Exercise 1 to include default values for $width
and $height
. Then, use this mixin in two different classes - one with argument values and one without.
Solution:
@mixin dimensions($width: 50px, $height: 50px) {
width: $width;
height: $height;
}
.box {
@include dimensions(100px, 200px);
}
.small-box {
@include dimensions; // will use default values
}
Remember, practice is key in mastering any programming concept. Happy coding!