I'm trying to write a dynamic mixin with LESS to generate the CSS automatically based on an ID. Is it possible with LESS?
// Variables
@body-margin: 50px;
@body-margin-tablet: 30px;
@body-margin-mobile: 20px;
@body-padding: 150px;
@body-padding-tablet: 130px;
// Mixin
#spacing(@id) {
& when ( @{id}-margin ) {
margin: @{id}-margin;
}
& when ( @{id}-padding ) {
padding: @{id}-padding;
}
@media (max-width: 900px) {
& when ( @{id}-margin-tablet ) {
margin: @{id}-margin-tablet;
}
& when ( @{id}-padding-tablet ) {
padding: @{id}-padding-tablet;
}
}
@media (max-width: 500px) {
& when ( @{id}-margin-mobile ) {
margin: @{id}-margin-mobile;
}
& when ( @{id}-padding-mobile ) {
padding: @{id}-padding-mobile;
}
}
}
body {
#spacing('body');
}
Expected result:
body {
margin: 50px;
padding: 150px
@media (max-width: 900px) {
margin: 30px;
padding: 130px;
}
@media (max-width: 500px) {
margin: 20px;
}
}