Stylus provides write a function with a group of CSS code. It is similar to mixins, However, Functions return data, and mixins do not return data. It also supports reusable code by supporting the DRY(Don’t Repeat Yourself) principle.
Stylus Functions
Like any programming language, Stylus contains function declaration and calling a function.
Function declaration contains the name of the function and body.
The function body contains arithmetic operators and returns values.
The syntax for Declare a function
functionname([arguments])
body
functionname is the name of the function and valid identifier in Stylus. arguments are optional arguments the body is valid logic or arithmetic CSS code using the function below
element{
functionname();
}
Here is a function example
widthCalculate(width1,padding1)
width1+padding1
div{
width:widthCalculate(100px,10)
}
Output CSS:
div {
width: 110px;
}
Stylus Default arguments in Functions
Sometimes, Arguments assign a default value.
In this example, the Second argument is assigned with the default value if the function is called with one argument.
widthCalculate(width1,padding1=20)
width1+padding1
div{
width:widthCalculate(100px)
}
Output CSS:
div {
width: 120px;
}
If the function passes with second arguments, the Default value is ignored
div{
width:widthCalculate(100px,50px)
}
Output:
div {
width: 150px;
}
Function named parameters
As the arguments are passed based on the order of the parameters such as first and second.
We can also assign the names arguments and order is not required.
In this, the names of arguments should match with passed arguments
widthCalculate(width1,padding1=20)
width1+padding1
div{
width:widthCalculate(padding1:50px,width1:150px)
}
Compiled to
div {
width: 200px;
}
Function return multiple values
Function not only returns a single value but returns multiple values.
It returns multiple values from a function
getWidthheight()
100px 50px
first parameters can be get using functionname() with index=0, 1
div{
width:getWidthheight()[0]
height:getWidthheight()[1]
}
Compile to CSS
div {
width: 100px;
height: 50px;
}