Open In App

SASS | Numeric operators

Last Updated : 28 May, 2020
Comments
Improve
Suggest changes
Like Article
Like
Report

Sass supports the standard mathematical numeric operators. They can automatically convert between compatible units, like minutes can be added with seconds and they will be automatically converted. 

Numeric Operators:

  • <expression> + <expression> operator adds two values or expressions or we can say adds the first value to the second value.
  • <expression> - <expression> operator subtracts the first value from the second one. This needs to be remembered.
  • <expression> * <expression> operator multiplies the two values.
  • <expression> / <expression> operator divides the first value by the second value.
  • <expression> % <expression> operator returns the remainder of the division of first value by the second one. It is also known as the modulo operator.

Examples:

  • css
    @debug 20px + 10px
    
    OUTPUT: 30px
  • css
    @debug 5s - 20s 
    
    OUTPUT: 15s
  • css
    @debug 10px * 2px
    
    OUTPUT: 20px*px (you will know about px*px later in this article)
  • css
    @debug 10px / 2px
    
    OUTPUT: 5px
  • css
    @debug 2in / 5px
    
    OUTPUT: 0.0208 (1in == 96px)
  • Unitless Numbers can be used with any unit numbers.

Example:

  • css
    @debug 20px + 7
    
    OUTPUT: 27px
  • css
    @debug 4s * 10
    
    OUTPUT: 40s
  • Numbers with different or you can say incompatible units can not be added, subtracted or used for modulo operators.

Example:

  • css
    @debug 10s - 5px
    
    OUTPUT: ERROR : Incomapatible units s and px
UNARY OPERATORS:

You can also use + and - as unary operators in which you need a simple expression.

  • + <expression> returns the value without changing it.
  • - <expression> return the value as it's negative version.

Example:

  • css
    @debug +(5s + 4s)
    
    OUTPUT: 9s
  • css
    @debug -(6s + 3s)
    
    OUTPUT: -9s
  • css
    @debug -(3s - 4s)
    
    OUTPUT: -1s
UNITS:

Sass has a great ability to manipulate the units according to their use in daily lives(real lives). This means when two numbers are multiplied their units are multiplied with the values and the same happens in the case of division. You'll understand more with these examples:

  • css
    @debug 4px * 6px
    
    OUTPUT: 24px*px
  • css
    @debug 10px/2s
    
    OUTPUT: 5px/s
  • css
    @debug 10px * 4s * 2em / 2deg
    
    OUTPUT: 40 px*s*em/deg
  • css
    $pixels-per-second : 10px/s
    @debug $pixels-per-second
    
    OUTPUT: 10px/s
  • css
    @debug 1/$pixels-per-second
    
    OUTPUT: 0.1s/px
  • Just like this the units gets canceled out if they are compatible and in division:

  • css
    @debug 1in / 96px
    
    OUTPUT: 1

Practical Implementation:

The above operators can be used to make CSS work easily and fast. 

Example:

You don't need to provide the show speed. of every component, You create a Sass that gives you the CSS for every component you desire.

Sass Code:

css
$speed: 1s/50px;

@mixin show($start, $stop) {
  left: $start;
  transition: left ($stop - $start) * $speed;

  &amp;:hover {
    left: $stop;
  }
}

.navbar {
  @include show(5px, 10px);
}

.button {
  @include show(2px, 5px);
}

 This will automatically give you the following CSS code:

.navbar {
  left: 5px;
  transition: left 0.1s;
}
.navbar:hover {
  left: 10px;
}

.button {
  left: 2px;
  transition: left 0.06s;
}
.button:hover {
  left: 5px;
}


Article Tags :

Similar Reads