Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to calculate with SCSS variables from function

Tags:

I have a function which converts px to rem. For example:

height: rem-calc(14px); // makes height: 1rem; 

Now I would like to calculate with it from variables. For example:

$switch-track-width: rem-calc(50px); $switch-thumb-size: $switch-track-width / 2; // making it 25px or 1.7857rem in this case 

That doesn't work so I tried something else:

$switch-thumb-size: ($switch-track-width / 2) + 0rem; $switch-thumb-size: (#{$switch-track-width} / 2) + 0rem; 

Both $switch-thumb-size examples aren't working either. Now this is dividing but I'm also unable to get times (*), plus (+) and minus (-) working.

I'm also having a problem when calculating with 2 variables. For example:

$switch-track-height: rem-calc(14px); $switch-track-width: rem-calc(50px); $switch-thumb-right: $switch-track-height - $switch-track-width; 

I prever to keep the function inside the variable instead of in the property like: height: rem-calc($switch-track-height);.

If someone could tell me how to calculate with SCSS variables on both examples that would be very helpful.

Thanks in advance

like image 545
SuperDJ Avatar asked Aug 28 '16 11:08

SuperDJ


People also ask

Does Calc work with Sass?

Calc() is not compiled by Sass but by the browser itself so it needs to have all values properly written in the function.

How do I run a variable from another file in SCSS?

To use variables across multiple files in SASS is carried out by @import rule of SASS. @import rule which import Sass and CSS stylesheets for providing variables, @mixins and functions. Such that combine all stylesheets together for compiled css. It also imports URL such as frameworks like Bootstrap etc..

Can you do math in Sass?

SASS allows for mathematical operations such as addition, subtraction, multiplication and division. You cannot use incompatible units such as px * px or while adding number with px and em leads to produce invalid CSS.


1 Answers

I managed to find something that is some what working. For example:

$switch-thumb-size: rem-calc(10px); $switch-track-height: rem-calc(20px); $something: calc( ( #{$switch-thumb-size} - #{$switch-track-height} ) / 2 ); 

This results in:

calc( ( 0.71428rem - 1.4285rem ) / 2 ) 

But there are problems with it. First if you know that what you calculated should always be minus and you therefor add a - sign infront of the variable it will not work. Example:

height: - $something; // Doesn't work 

The second problem I have with this method is that it creates a lot of redundant characters.

Because it actually puts: height: calc( ( 0.71428rem - 1.4285rem ) / 2 ) in your css instead of: height: -0.35684rem

like image 165
SuperDJ Avatar answered Sep 18 '22 20:09

SuperDJ