Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using variables for CSS properties in Sass

Tags:

sass

mixins

I am writing a @mixin with some math in it that calculates the percentage width of an element, but since it is very useful I would like to use the same function for other properties too, like margins and paddings.

Is there a way to pass the property name as an argument to a mixin?

@mixin w_fluid($property_name, $w_element,$w_parent:16) {     $property_name: percentage(($w_element/$w_parent)); } 
like image 481
Laura Silvani Avatar asked Mar 08 '13 11:03

Laura Silvani


People also ask

Can I use CSS custom properties in sass?

Because of this, Sass parses custom property declarations differently than other property declarations. All tokens, including those that look like SassScript, are passed through to CSS as-is. The only exception is interpolation, which is the only way to inject dynamic values into a custom property.

How do I assign a sass variable to a variable in CSS?

To convert the SASS variable to a CSS custom property you put curly brackets around it, and a hash in front. If you've used template literals in JavaScript it's the same thing, just with a # instead of a $ (because we already have $ in the variable name).

Should I use SCSS variables or CSS variables?

The advantage of CSS variables is undisputed. They can be transformed and overridden whereas SCSS variables can not. CSS variables simplify creating color theme based sites like this right one right here.

How do I declare a variable in sass?

Declaration of a variable in SASS: In SASS, you can define a variable by using $ symbol at the starting of the name of the variable and followed by its value. Understanding scope of a variable: SASS variables can be declared anywhere in the document before it is used.


2 Answers

You need to use interpolation (eg. #{$var}) on your variable in order for Sass to treat it as a CSS property. Without it, you're just performing variable assignment.

@mixin w_fluid($property_name, $w_element, $w_parent:16) {     #{$property_name}: percentage(($w_element / $w_parent)); } 
like image 116
rcorbellini Avatar answered Sep 18 '22 18:09

rcorbellini


In addition to the @rcorbellini response

You can use string and variable together

@mixin margin($direction) { // element spacing      margin-#{$direction}: 10px;  } 
like image 37
Julha Avatar answered Sep 16 '22 18:09

Julha