29

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));
}

2 Answers 2

59

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));
}
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks rcorbellini, I was referencing the property name in the declaration block in the wrong way. Good one is: #{$property_name}. Grazie!
10

In addition to the @rcorbellini response

You can use string and variable together

@mixin margin($direction) { // element spacing

    margin-#{$direction}: 10px;

}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.